SQL Alchemy 2.0 反映 Oracle 表

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

我试图找到这个问题是否是针对 SQL Alchemy 2.0+ 提出的,但不幸的是,因为我能找到的都是旧版本。

我与 Oracle 连接良好,只需执行即可进行查询

text("sql script")

连接是

engine = create_engine(f"oracle+oracledb://{user}:{pass}@{dsn}",echo='debug')

正如我所说,这连接得很好。在此之后我所拥有的就是:

meta = MetaData()
table = Table(name, meta, schema='user', autoload_with=engine)

所以现在我想做的就是反映该表。我一直在对 SQL Server DB 进行类似的操作,一切都很好,没有任何问题。然而,当上面的运行时,我得到

sqlalchemy.exc.NoSuchTableError: name

我在上面得到了这一点,尽管从调试中我可以看到它针对 Oracle 运行的 SQL 来获取元数据,并且实际上返回了它应该返回的所有内容。在 Oracle 中针对 all_tab_cols 运行的查询中,它返回表中的所有列、数据类型等。获取索引等的查询返回该表的所有内容。

我还尝试了作为 Reflect_table 的 Reflection.py 中的文档字符串

engine = create_engine('...')
meta = MetaData()
table = Table('user', meta)
insp = inspect(engine)
insp.reflect_table(table, None)

再次出现同样的错误,尽管所有 SQL 似乎都在 Oracle 中运行以获取正在返回该表结果的信息。

python sqlalchemy python-oracledb
1个回答
0
投票

问题是我应该始终将小写表名传递给表反射,无论 OracleDB 中的大小写如何

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