我用exists来检查数据库中是否存在数据。
我在以下帖子中跟随了@icecrime的回答。 SqlAlchemy Core and bare exists query
我在使用EXISTS
时遇到以下错误,如上面的主题所述。
*** ProgrammingError: (ProgrammingError) ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'EXISTS'. (156) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)") u'SELECT EXISTS (SELECT * \nFROM [ItemData] \nWHERE [ItemData].[name] = ?)' ('skv',)
我正在使用Sqlalchemy,以下是我使用过的代码。
result=conn.execute(select([exists().where(ItemData.c.name == 'skv')]))
我已使用"mssql+pyodbc//"
前缀连接到服务器。当我使用sqlite:处理数据库时,它完美无缺,它是否非常特定于Microsoft sql数据库访问?
PS:我是sqlalchemy的新手,如果错误,请为我的术语道歉。
答案 0 :(得分:3)
首先,我尝试在自己的SQL Server数据库上运行等效查询:
SELECT EXISTS (SELECT * FROM [ItemData] WHERE [ItemData].[name] = 'skv')
Incorrect syntax near the keyword 'EXISTS'.
MSDN documentation shows that this use of EXISTS is not supported,所以我们转到SQL Alchemy documentation并找到:
请注意,某些数据库(如SQL Server)不允许使用EXISTS 表达式将出现在SELECT的columns子句中。要基于exists作为WHERE选择一个简单的布尔值,请使用literal()