【发布时间】:2013-02-25 14:14:27
【问题描述】:
我有一个使用 Flask-SQLAlchemy 的 Flask 应用程序。在我的单元测试中,我初始化了应用程序和数据库,然后调用了db.create_all(),由于某种原因,它看起来没有拾取我的任何模型,因此没有创建任何表。
我在我的模型中同时使用__tablename__ 和__bind_key__,因为我有两个数据库。
我的配置:
SQLALCHEMY_DATABASE_URI = 'sqlite://'
SQLALCHEMY_BINDS = {
'db1': SQLALCHEMY_DATABASE_URI,
'db2': SQLALCHEMY_DATABASE_URI
}
在我的单元测试中减少我的 setUp() 方法的版本:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
class APITestCase(unittest.TestCase):
app = Flask(__name__)
db = SQLAlchemy(app)
db.create_all()
这是我的两个模型的示例,每个绑定类型一个:
class Contact(db.Model):
__tablename__ = 'contact'
__bind_key__ = 'db1'
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
...
def __init__(first_name, last_name):
self.first_name = first_name
self.last_name = last_name
...
class BaseUser(db.Model):
__tablename__ = 'User__GeneralUser'
__bind_key__ = 'db2'
id = db.Column(db.Integer, primary_key=True)
username = db.Column('Username', db.String(100))
first_name = db.Column('FirstName', db.String(100))
last_name = db.Column('Surname', db.String(100))
...
def __init__(username, first_name, last_name):
self.username = username
self.first_name = first_name
self.last_name = last_name
...
我是否遗漏了一些显而易见的事情? Flask-SQLAlchemy 如何知道在哪里查找我的模型以创建关联表?
【问题讨论】:
-
你导入你的模型类了吗?
-
是的,我尝试过导入和不导入模型。
标签: python flask flask-sqlalchemy