python-3.x 如何通过sqlalchemy获取一个表对象,并在其中查询?

hc2pp10m  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(125)

我想从数据库中的指针表中查询一些信息(我不喜欢原生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上找到了一些帖子,但是每个结果都不能解决我的问题。

dgiusagp

dgiusagp1#

如果你想查询一个表,你可以通过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 = 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]

请参阅Reflecting Database Objects的文档,如果您更喜欢使用ORM模型,请参阅Automap扩展。

相关问题