将SELECT上的SQL大小写转换为SQLAlchemy格式时出现不明确的文字错误
我在将下面关于SELECT的CASE语句翻译成SQLAlchemy ORM时遇到问题。我一直收到错误:“不明确的文本:False。使用'text()'函数指示SQL表达式文本,或使用'literal()'指示绑定值。” Case语句检查一个变量,然后返回数据库中的一列或选择一个文本。文本是在运行sql语句之前设置的将SELECT上的SQL大小写转换为SQLAlchemy格式时出现不明确的文字错误,sqlalchemy,Sqlalchemy,我在将下面关于SELECT的CASE语句翻译成SQLAlchemy ORM时遇到问题。我一直收到错误:“不明确的文本:False。使用'text()'函数指示SQL表达式文本,或使用'literal()'指示绑定值。” Case语句检查一个变量,然后返回数据库中的一列或选择一个文本。文本是在运行sql语句之前设置的 DECLARE @str_cntry_cd varchar(3) SELECT COUNTRY_CD, CASE WHEN @str_cntry_cd IS
DECLARE @str_cntry_cd varchar(3)
SELECT COUNTRY_CD,
CASE WHEN @str_cntry_cd IS NOT NULL THEN RESOLUTION_ID
ELSE 10
END AS RESOLUTION_ID
FROM COUNTRY
SQLAlchemy代码如下所示:
CREATE TABLE dbo.COUNTRY
(
COUNTRY_CD varchar(4) NOT NULL,
RESOLUTION_ID int NOT NULL
)
下表如下:
CREATE TABLE dbo.COUNTRY
(
COUNTRY_CD varchar(4) NOT NULL,
RESOLUTION_ID int NOT NULL
)
SQLAlchemy.9.9
视窗7
SQL Server 2008 R2
Python 2.7
国家代码!=没有任何故障是由
引起的。
它的计算结果是python的True
/False
,SQLAlchemy不知道如何将其转换为SQL的True/False,因为它是不明确的。因此,您需要通过使用SQLAlchemy的text
或literal
函数为正在使用的SQL添加literal true/false。但是更好的方法是使用true
或false
函数
因此,您可以将代码中的buggy部分替换为:
db.false()
希望这有帮助