【发布时间】:2020-01-02 23:37:21
【问题描述】:
我正在尝试使用 Python 3.7 和 pyodbc 更新数据库中的一些值,但不断收到错误 Error - An expression of non-boolean type specified in a context where a condition is expected, near ')'
def UpdateSQL(self,shift,conn):
cursor=conn.cursor()
sql="""
UPDATE [DB].[dbo].[ZSB_Datapool_Test]
SET AssemblyDateTime=GETDATE(),Shift_Ass=?,User_Ass='mtp1'
WHERE(
SELECT TOP 1 *
FROM [DB].[dbo].[ZSB_Datapool_Test]
WHERE TotalResult='OK'
AND ID=?
AND Machinenr=?
And Serialnr=?
)
"""
cursor.execute(sql,shift,self.scanID,self.scanMa,self.scanSn)
cursor.close()
文件“c:\Users\mmai\Documents\Python2\Scanner\Scanner.py”,第 228 行, 在更新 SQL cursor.execute(sql,shift,self.scanID,self.scanMa,self.scanSn) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL 服务器驱动程序][SQL Server]In der Nähe von ')' wurde ein nicht boolescher Ausdruck in einem Kontext angegeben, in dem eine Bedingung 厄瓦特线。 (4145) (SQLExecDirectW); [42000] [微软] [ODBC SQL 服务器驱动][SQL Server]Anweisung(en) konnte(n) nicht vorbereitet 韦尔登(8180)")
【问题讨论】:
-
看看你的 where 子句。您在那里有一个子查询,但您基本上是在说“Where MySubQuery”。你错过了等式的另一边。其中 MySubQuery = X
-
谢谢
WHERE EXISTS(..)成功了:)
标签: python sql sql-server pyodbc