我有一個使用Flask-SQLAlchemy的Flask應用程序。在我的單元測試中,我初始化了應用程序和數據庫,然後致電db.create_all()
,出於某種原因,它看起來沒有拾取我的任何模型,因此不創建任何表。Flask-SQLAlchemy不使用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如何知道在哪裏尋找我的模型以創建關聯的表?
你有你的進口模型類? – flyx 2013-02-25 14:18:27
是的,我已經嘗試過,並且沒有導入我的模型。 – 2013-02-25 15:08:36