0
我正在研究烧瓶和烧瓶 - sqlalchemy的主要概念。记住教程中的信息(intro和contexts)我试图创建一个简单的数据库。 我的瓶的应用程序被strucured如下:如何防止烧瓶中的双数据提交 - sqlalchemy
./db/
./db/models.py
./main.py
文件的内容如下:
./main.py
:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(__name__)
from db.models import create_app
dbapp = create_app()
with dbapp.test_request_context():
from db.models import db, mumsUsers
db.create_all()
db.session.rollback()
admin = mumsUsers("admin", "[email protected]")
db.session.add(admin)
db.session.commit()
./db/models.py
:
from flask.ext.sqlalchemy import SQLAlchemy
from flask import Flask, current_app
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db.init_app(app)
return(app)
class mumsUsers(db.Model):
__tablename__ = 'mumsUsers'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(80), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
当我检查在sqlite数据库中,我看到sqlalchemy是tr ying发送commit()两次。所以我必须删除unique = True参数以停止应用程序崩溃。与此同时,当我请从蟒壳以下commans:
管理员= mumsUsers( '管理员', '[email protected]')
db.session.add(管理员)
db.session.commit()
只出现一个记录(预计)。
因此,我的问题是如何防止双重调用commit()?
更新 出现的问题是由于我的错误导致循环进口导致的。事实上,我没有注意到我为应用程序包调用了导入。 因此,请忽略此帖。
你为什么要调用'Flask'两次?你只需要它在主要。 – 2013-05-06 15:41:18
谢谢您的建议。我删除了它,但问题仍然存在。 – wanderlust 2013-05-06 15:58:25
而不是编辑问题,请提交答案(循环导入),然后将其标记为关闭。有人可能会通过搜索引擎触及这个问题,你会成为那个人的英雄。 – Clint 2013-05-06 21:23:42