尝试INNER JOIN 2表时出现此错误。
"找不到列" TE"或用户定义的函数或聚合" TE.UserID",或名称是ambigous"
有什么想法吗?
我尝试将表名添加到Select语句中,如下所示。这实际上是在SQL Server中运行查询。但它对Python ODBC没有任何作用。
"Select TP.UserID, Phone "
但这并没有帮助。
userid = 'dd88'
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 UserID, Phone "
"FROM dbo.SEC_UserProfile as TP INNER JOIN dbo.SEC_User as TE "
"ON TP.UserID = TE.UserID "
"(nolock)"
"WHERE UserID LIKE ?")
Values = ['%' + userid + '%']
cursor.execute(SQLCommand,Values)
results = cursor.fetchone()
if results:
print(connections + " " + str(results[0]) + " " + str(results[1])) # enters results in entry
connection.close()
else:
print(connections + " - NO")
connection.close()
UserID在两个表中。
答案 0 :(得分:4)
一个问题是你有(nolock)
在错误的地方。它应该紧跟表别名,而不是连接条件:
在构建此SQLCommand字符串时,是否还需要添加连接运算符?我从未使用过Python,但如果这是.net代码,它甚至都不会编译。
SQLCommand = ("SELECT TP.UserID, Phone " +
"FROM dbo.SEC_UserProfile as TP (nolock) INNER JOIN dbo.SEC_User as TE (nolock)" +
"ON TP.UserID = TE.UserID " +
"WHERE TP.UserID LIKE ?")
答案 1 :(得分:3)
您需要通过在select和where子句中定义需要UserID的表来更改sql语句,例如:
import uwsgi
def setup_db():
""" routine that sets up the connection to your database """
...
uwsgi.post_fork_hook = setup_db
@TabAlleman是对的,(nolock)的地方不正确。更新了我的答案。