gpt4 book ai didi

Python、sqlalchemy 和获取具有模式的表的快速方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:31 27 4
gpt4 key购买 nike

我一直在使用 sqlalchemy 来完成其余的实现,现在我想从数据库中获取表的列表。我已经尝试过这些:

# first attempt
engine = create_engine(datasource.connection_string)
insp = reflection.Inspector.from_engine(engine)
tables = insp.get_table_names()
view = insp.get_view_names()

# second attempt
meta = MetaData()
meta.reflect(bind=engine, views=True)

虽然它们都工作得很好,但都有各自的缺点。

  1. 第一个没有给我架构,只给我对象名称
  2. 第二个给了我整个世界,但跑得很慢......
  3. 两者都没有过滤

使用 sql 语句不是一个选项,因为我需要它有点跨数据库。

有没有办法快速加载包括模式在内的对象?过滤不太重要,因为我可以足够快地在对象列表上执行此操作。

最佳答案

get_table_names()meta.reflect() 一次仅从一个架构加载表。如果未给出显式模式名称,则假定为“默认”模式,这是您的数据库连接在连接时自动选择的模式;这是在数据库端与用于连接的用户帐户一起配置的。

如果您想查看此架构的名称,请使用“default_schema_name”属性:

>>> from sqlalchemy import create_engine, inspect
>>> e = create_engine("postgresql://scott:tiger@localhost/test")
>>> insp = inspect(e)
>>> insp.default_schema_name
u'public'

关于Python、sqlalchemy 和获取具有模式的表的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com