Flask_SQLAlchemy无法像SQLAlchemy那样反映数据库

时间:2019-05-09 19:23:56

标签: python sql flask sqlalchemy flask-sqlalchemy

我正在尝试使用python-Flask将外国人数据库连接到Flask_SQLALchemy应用程序

我四处张望,包括FLASK_SQLALCHEMY official doc 在过去的四天里,我一直在互联网上到处寻找FLASK_SQLALCHEMYORM库中没有任何运气的任何教程

我一直在看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 = TrueBase = 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资源,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

请勿使用Flask_SQLAlchemy并使用常规的SQLAlchemy