Python Flask SQLAlchemy不使用create_all()创建表
我有一个烧瓶应用程序,使用烧瓶炼金术。在我的单元测试中,我初始化了应用程序和数据库,然后调用Python Flask SQLAlchemy不使用create_all()创建表,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我有一个烧瓶应用程序,使用烧瓶炼金术。在我的单元测试中,我初始化了应用程序和数据库,然后调用DB.create_all(),出于某种原因,它看起来没有拾取我的任何模型,因此也没有创建任何表 我在我的模型中同时使用了\uuuuu tablename\uuuuu和\uuuu bind\uuuu key\uuuuu,因为我有两个数据库 我的配置: SQLALCHEMY_DATABASE_URI = 'sqlite://' SQLALCHEMY_BINDS = { 'db1': SQLALCH
DB.create_all()
,出于某种原因,它看起来没有拾取我的任何模型,因此也没有创建任何表
我在我的模型中同时使用了\uuuuu tablename\uuuuu
和\uuuu bind\uuuu key\uuuuu
,因为我有两个数据库
我的配置:
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如何知道在何处查找我的模型以创建关联表?在单元测试中,您不应该创建SQLAlchemy对象(“db”)的新实例,您应该导入模型从中下降的实例: models.py:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Contact(db.Model):
...
tests.py:
from models import db
from flask import Flask
import unittest
class TestExample(unittest.TestCase):
def setUp(self):
self.app = Flask(__name__)
db.init_app(self.app)
with self.app.app_context():
db.create_all()
您的SQLALCHEMY\u数据库\u URI错误,请阅读此处如何配置引擎Sqlite数据库 如果您从未体验过,请查看此回购并应用于您的应用:)
您导入了模型类吗?是的,我尝试了导入模型和不导入模型。如果在许多模块中实现了所有模型声明,有哪些好方法可以确保它们得到执行?