如何通过sqlalchemy通过表名获取Table对象并在其中查询?

问题描述 投票:0回答:1

我想从数据库中的指向表中查询一些信息(我不喜欢原生SQL语句),这是我的代码:

import sqlalchemy as sqa

sl_database_link = 'mssql+pymsql://……'
sl_engine = sqa.create_engine(sl_database_link)
session = scoped_session(sessionmaker(bind=sl_engine))
insp_sl = inspect(sl_engine)
tables = insp_sl.get_table_names()
session.query('the table which I want to query')

但是当我得到表名后,我不知道如何正确地通过表名查询表,有人可以告诉我吗?

我在StackOverflow上找到了一些帖子,但每个结果都不能解决我的问题。

python-3.x sql-server sqlalchemy orm
1个回答
4
投票

如果您想查询单个表,您可以通过 Table 类获取对象。

import sqlalchemy as sa
...
tbl = sa.Table(name_of_table, sa.MetaData(), autoload_with=engine)

with engine.connect() as conn:
    rows = conn.execute(sa.select(tbl))

如果您想要多个表,可以使用 metadata.reflect:

metadata = sa.MetaData()
# Omit "only" to reflect all tables
metadata.reflect(engine, only=[name_of_table1, name_of_table2, ...])
my_table = metadata.tables[name_of_table]

请参阅反映数据库对象的文档,如果您更喜欢使用 ORM 模型,请参阅Automap扩展。

© www.soinside.com 2019 - 2024. All rights reserved.