我正在尝试使用python-Flask
将外国人数据库连接到Flask_SQLALchemy
应用程序
我四处张望,包括FLASK_SQLALCHEMY official doc
在过去的四天里,我一直在互联网上到处寻找FLASK_SQLALCHEMY
中ORM
库中没有任何运气的任何教程
我一直在看SQLAlchemy Reflecting doc,但是我对下一步的决定感到困惑
这是我的烧瓶代码:
Base = automap_base()
xDB = 'postgres://****'
engine = db.create_engine(xDB)
metadata = db.MetaData()
Session = db.sessionmaker(bind=engine)
session = db.scoped_session(engine)
Base.metadata.reflect(engine)
y = [db.Table(table,metadata,autoload=True,autoload_with=engine) for
table in engine.table_names()]
我已经尝试根据我从许多来源中读到的内容以多种不同的方式进行查询,但其中的任何一个都无法与Flask_SQLAlchemy
一起使用
尝试#1:
t = db.select('test1').limit(10)
engine.execute(t).fetchall()
输出:
t =选择test1.id,test1.name 从test1 LIMIT:param_1
尝试#2:
t = db.session.query([test1])
输出:
sqlalchemy.exc.InvalidRequestError:预期的SQL表达式,列或映射的实体-得到了'[Table('test1',MetaData(bind = None),Column('id',INTEGER(),table =,nullable = False,server_default = DefaultClause(,for_update = False)),Column('name',VARCHAR(),table =,nullable = False),schema = None)]'
我认为它已经被映射。.autoLoad = True
,Base = automap_base()
和Base.metadata.reflect(engine)
尝试#3:
t = metadata.tables['test1']
输出:
KeyError:表('test1',MetaData(bind = None),列('id',INTEGER(),table =,nullable = False,server_default = DefaultClause(,for_update = False)),列('name ',VARCHAR(),table =,nullable = False),schema = None)
我不了解他们的metadata
的定义是metadata = db.MetaData()
我找不到旧的或新的Flask_SQLAlchemy的任何东西,但是我可以看到一些不适用于Flask_SQLAlchemy
库的SQLAlchemy资源,有人可以帮忙吗?
答案 0 :(得分:0)
请勿使用Flask_SQLAlchemy
并使用常规的SQLAlchemy