python - SQLAlchemy 不返回 SQL Server 数据库中的所有表名

标签 python sql-server tsql sqlalchemy pyodbc

当我下载这个 example database, AdventureWorksLT2012_Data ,并尝试访问 sql alchemy 中的 table_names,通过

from sqlalchemy import create_engine
engine = create_engine("mssql+pyodbc://sa:PASSWORD_HERE@localhost:1433/AdventureWorksLT?driver=FreeTDS")
engine.table_names()

我得到 ['BuildVersion', 'ErrorLog']。但是,这缺少数据库中的表。

例如,执行此查询会给出预期的表名...

rs = engine.execute("SELECT name FROM sys.Tables")
[row['name'] for row in rs]

我明白了

['BuildVersion', 'Address', 'Customer', 'CustomerAddress', 'Product', 'ProductCategory', 'ProductDescription', 'ProductModel', 'ProductModelProductDescription', 'SalesOrderDetail', 'SalesOrderHeader', 'ErrorLog']

这是一个错误,还是我忽略了什么?如果我创建一个新的数据库和与上面名称相同的表,则 engine.table_names() 会按预期工作。

最佳答案

查看对应的database creation script ,您从 engine.table_names() 获得的两个表是在 [dbo] 架构中创建的。其他在 [SalesLT] 架构中创建。

所以看起来 engine.table_names() 只是列出在它被调用时有效的默认模式的表,在这种情况下恰好是 [dbo].

关于python - SQLAlchemy 不返回 SQL Server 数据库中的所有表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774222/

相关文章:

sql - 获取某位列所有行的 "OR"结果

.net - SQL 查询将文本数据存储在 Varbinary(max) 中

python - 为什么 `K.cast` 使用 `categorical_accuracy` 而不是 `K.mean` ?

python - 从列表中计数并附加它

python - 在列表中搜索数据并将它们导出到 .csv 文件中

sql-server - 工作 CREATE VIEW 在 IF NOT EXISTS 中给出语法错误

python - 从 docker 中的 pipfile.lock 安装时出错

SQL - 如何选择特定列中具有最大值的数据行?

sql - 我应该把 .mdf 和 .ldf 文件放在哪里才能通过 git 共享 SQL 脚本

sql-server - 无法在 SSMS 中附加数据库