SqlAlchemy存在用法

时间:2014-12-19 05:12:34

标签: python sqlalchemy exists pyodbc

我用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的新手,如果错误,请为我的术语道歉。

1 个答案:

答案 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()