【发布时间】:2014-03-17 17:01:54
【问题描述】:
我有
cursor.execute("select RM_ID FROM Sales.dbo.MARKETING where VERSION = 'SomeVersion'")
这给了我回溯错误:
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Sales.dbo.MARKETING'. (208) (SQLExecDirectW)")
我还有几行代码:
cursor.execute("select RUNDATEEST FROM Sales.dbo.MARKETING where VERSION = 'SomeVersion'")
除了给我没有错误的列名之外,它们完全相同。我不确定我的错误是什么。
注意:
- 我已经检查了表中的列名以确保它存在。
- 我注意到此列是该表的键。也许键需要不同的语法?
- 当我在 SQL Server 中执行查询时,它运行良好。
【问题讨论】:
-
我不是 python 开发人员...您能调试失败的
cursor.execute语句并检查 sql 连接字符串/属性吗?也许它没有连接正确的数据库。 -
他们使用包含数据库名称的三部分名称,因此数据库上下文无关紧要。但是,如果用户不同,他们可能没有适当的权限。
-
@DMason 我最近被授权访问 SQL Server 上的这个数据库,所以这不太可能。字符串为:cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ARACHNSQL1;DATABASE=SALES;Trusted_Connection=yes')
-
@JNK 我将与数据库管理员核实。
-
好的,看来连接字符串是在运行时设置的。我看到
Trusted_Connection-yes。这意味着您的应用程序正在尝试使用应用程序的 Windows 凭据连接到 MSSQL。该应用程序是否在您的凭据下运行? (它可能在另一个用户下运行。模拟可能在起作用......)
标签: python sql-server pyodbc