SQLAlchemy 不会 return table 服务器数据库中的所有 table 名称
SQLAlchemy does not return all table names in SQL Server database
当我下载此 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']
。但是,数据库中缺少 tables。
例如,执行此查询会给出预期的 table 名称...
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']
这是一个错误,还是我忽略了什么?如果我创建一个新数据库,并且 tables 具有与上面相同的名称,那么 engine.table_names()
将按预期工作。
查看相应的 database creation script,您从 engine.table_names()
获得的两个表是在 [dbo]
架构中创建的。其他的是在 [SalesLT]
架构中创建的。
因此,engine.table_names()
似乎只列出了调用时生效的默认模式的表,在本例中恰好是 [dbo]
。
当我下载此 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']
。但是,数据库中缺少 tables。
例如,执行此查询会给出预期的 table 名称...
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']
这是一个错误,还是我忽略了什么?如果我创建一个新数据库,并且 tables 具有与上面相同的名称,那么 engine.table_names()
将按预期工作。
查看相应的 database creation script,您从 engine.table_names()
获得的两个表是在 [dbo]
架构中创建的。其他的是在 [SalesLT]
架构中创建的。
因此,engine.table_names()
似乎只列出了调用时生效的默认模式的表,在本例中恰好是 [dbo]
。