У меня есть приложение Flask, которое использует Flask-SQLAlchemy. В моих модульных тестах я инициализирую приложение и БД, затем вызываю db.create_all()
, и по какой-то причине похоже, что он не подбирает ни одну из моих моделей, поэтому не создает никаких таблиц.Flask-SQLAlchemy не создает таблицы using 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
Да, я пробовал как с, так и без импорта моих моделей. –