我有如下應用結構:燒瓶的SQLAlchemy + create_all()失敗,許多一對多的關係創建
run.py
|->app
|->models
|-> user.py (declares role-to-user relationship table and User model)
|-> role.py (declares Role model)
|-> main.py (contains initialization and all required imports)
|-> extensions (here sqlalchemy variable declared to be imported later)
當我試圖創建下面的方式初始DB結構:
from app.models import *
from app.extensions import db
from app.main import myapp #app is initialized with all packages like assets, db, security, etc.
with myapp.test_request_context():
db.create_all()
我有一個例外: NoReferencedTableError:與'users_to_roles.user_id'列關聯的外鍵找不到表''用戶',用於生成目標列'id'的外鍵
我也試圖道瓊斯它下面的方式:
@app.before_first_request
def initialize_database():
db.create_all()
沒有成功
我試圖移動Role
到User
模型聲明瞭相同的結果相同的文件。我在這裏閱讀文檔:https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html,但它說'你只需要導入db
',它不起作用。
這裏是User
模型和關係表是如何申報(角色模型類似於User
):
users_to_roles_association_table = db.Table('users_to_roles',
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
db.Column('role_id', db.Integer, db.ForeignKey('roles.id')))
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
.......
roles = db.relationship('Role', secondary=users_to_roles_association_table,
backref=db.backref('users', lazy='dynamic'))
如何使用燒瓶SQLAlchemy中創建初始數據庫結構?
這樣一個愚蠢的錯誤!謝謝,你救了我一些神經! – 2014-10-06 17:31:40
我試圖通過顯式設置表名來覆蓋__tablename__,但它仍然遵循默認的單數名稱。 – 2015-04-01 11:48:59
@KevinQ你可以分享的代碼示例說明問題嗎? – dgilland 2015-04-01 15:55:11