【发布时间】:2017-08-04 02:15:40
【问题描述】:
当我下载这个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() 将按预期工作。
【问题讨论】:
-
@Parfait,数据库没有损坏,问题可以通过从链接下载来重现。我没有意识到
engine.table_names可能只查看数据库中的特定模式。
标签: python sql-server tsql sqlalchemy pyodbc