【发布时间】:2018-03-02 17:01:42
【问题描述】:
更新我更新了我的代码和我收到的错误。
我不确定如何将INNER JOIN 与 Python 的 pypyODBC 一起使用。
我收到一条错误提示
“找不到列“UT”或用户定义的函数或聚合,“UT.userID”,或者名称不明确。”
我尝试在 SELECT 语句中指定表。
关于如何解决此问题的任何建议?
import pypyodbc
def intercard():
firstname = "Paul"
key = "334"
try:
connection = pypyodbc.connect('Driver={SQL Server};Server=MyServerName;Database=MyDatabaseName;Trusted_Connection=yes;')
except pypyodbc.Error as ex:
sqlstate = ex.args[0]
if sqlstate == '28000':
print("You do not have access.")
cursor = connection.cursor()
SQLCommand = ("SELECT UT.userID, Status, userName "
"FROM dbo.StatusTable as ST INNER JOIN dbo.UserTable as UT " # table name
"ON ST.userID=UT.userID"
"(nolock)"
"WHERE userKey LIKE ? AND First Name LIKE ?")
Values = ['%' + key + '%', '%' + firstname + '%']
cursor.execute(SQLCommand,Values)
results = cursor.fetchone()
if results:
print(connections + " " + str(results[0]) + " " + str(results[1])) # enters results in entry
connection.close()
我只想同时连接到 StatusTable 和 UserTable。
** 更新 2 **
我可以直接在 SQL Server 中运行以下命令,并且可以正常工作。但我无法让它在 Python 中工作......
SELECT ST.[userID]
FROM [dbo].[StatusTable] as ST INNER JOIN [dbo].[UserTable] as UT
ON ST.userID = UT.userID
where Name = 'Paul'
【问题讨论】:
-
@Kade - 您在 FROM 子句中将表别名定义为
ST和UT,然后在 ON 子句中使用SE和SP作为别名。 -
已修复。我还没有更新那些。
-
@Kade - 在
as UT之后似乎需要一个空格。始终在每个代码片段的末尾放置一个空格,以防止片段粘合在一起时出现意外错误。
标签: python sql-server pyodbc