问题我有一个烧瓶应用程序,其中我的sqlalchemy reflect()对SQLALCHEMY_BINDS指定的绑定的工作方式与对SQLALCHEMY_DATABASE_URI的工作方式不同。
结果 SQLALCHEMY_BINDS不会自动映射我的架构。
我有两个数据库,如我的config.py
所示SQLALCHEMY_DATABASE_URI = 'postgresql://chet@localhost/ubuntuweb'
SQLALCHEMY_BINDS = {
'test': 'postgresql://chet@localhost/warehouse',
}
哪个db我输入URI db是精简的,并且使用reflect()工作没有任何问题
from app import db
from sqlalchemy.orm import relationship, backref
db.Model.metadata.reflect(db.engine)
class rutable(db.Model):
__table__ = db.Model.metadata.tables['rutable']
当我在models.py
中添加此代码时class test1(db.Model):
__bind_key__ = 'test'
__table__ = db.Model.metadata.tables['test1']
results in this error
__table__ = db.Model.metadata.tables['test1']
KeyError: 'test1'
然而这是有效的
class test1(db.Model):
__bind_key__ = 'test'
__tablename__ = 'test1'
id = db.Column(db.Integer, primary_key=True)
test = db.Column(db.String(80), unique=True)
效果很好。这是架构的完整映射。我想利用不需要手动写出变量。当我把它减少到
class test1(db.Model):
__bind_key__ = 'test'
堆栈跟踪
sqlalchemy.exc.InvalidRequestError: Class <class 'app.models.test1'>
does not have a __table__ or __tablename__ specified and does not
inherit from an existing table-mapped class.
当我添加表名
时class test1(db.Model):
__bind_key__ = 'test'
__tablename__ = 'test1'
sqlalchemy.exc.ArgumentError: Mapper Mapper|test1|test
could not assemble any primary key columns for mapped table 'test1'
知道为什么会这样吗? 当我调查我的表中的id列时,它看起来像psql中的主键
谢谢!