无法在 python 中执行长 sql 语句? [复制]
Posted
技术标签:
【中文标题】无法在 python 中执行长 sql 语句? [复制]【英文标题】:Couldnt execute long sql statement in python? [duplicate] 【发布时间】:2019-11-09 12:23:05 【问题描述】:我已将我的 sql 语句定义如下(注意换行符)
def getTankSystemIds():
sql='select tt.TankSystemId,ts.sitecode,tt.productid ' \
'from [dbo].[TankSystems] tt' \
'left join [dbo].sites ts on tt.siteid=ts.siteid where ts.companyid=8' \
'and ProductId in (10,4,2,3,11,4)'
cursor = connectDB()
cursor.execute(sql)
records = cursor.fetchall()
调用此方法时,出现以下错误。我将单引号更改为 " 和 ''',""" 但都给出了相同的错误 我在这里做错了什么? 我也尝试在一条长行中提供 sql 语句。但是同样的错误
SyntaxError: Non-ASCII character '\xef' in file /Users/ratha/PycharmProjects/Processor/Utilities/DbConnector.py on line 86, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
【问题讨论】:
首先,您似乎缺少一些空格。在 tt 之后和 left join 之间,然后在 companyid=8 和 AND productID 之间。错误与您如何转义/不转义斜线有关。如果你把 SQL 放在一行没有斜杠,应该没问题。 @dfundako No..不是空格。我再次尝试输入一行也没有用 您的 SQL 无效。如果没有空格,您的第一个表别名将变为 ttleft,而不是 tt。所以当你引用 tt.siteid 时,它会失败。 【参考方案1】:SQL 查询是从某处复制/粘贴,还是被另一个程序保存为 UTF-8 编码?它有一个字节顺序标记 (BOM),这就是 \xef
字符。 ASCII 不喜欢这样,因为它是 Unicode 的东西。
【讨论】:
以上是关于无法在 python 中执行长 sql 语句? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中执行雪花 SQL 语句时出现雪花 python 错误
Python 3.6.0的sqlite3模块无法执行VACUUM语句