python - 错误:sqlalchemy.exc.ProgrammingError 中“N”处或附近的语法错误
问题描述
我有一个查询
query = '''
EXECUTE sp_executesql
N'select ex.b_id, b.code,
b.status as status,
ex.c_id, c.c_no, c.title as title,
ex.s_id, s.s_no, s.title as s_title,
ex.o_id, isnull(o.o_no, o._id) as o_no,
ex.e_id,
ex.types
from dbo.exercises ex
left join XXXX o on
(ex.b_id = o.b_id and ex.c_id = o.c_id
and ex.s_id = o.s_id and ex.o_id = o.o_id)
inner join YYYY b on (ex.b_id = b.b_id)
inner join ZZZZ c on (ex.b_id = c.b_id and
ex.c_id = c.c_id)
inner join SSSS s on (ex.b_id = s.b_id and
ex.c_id = s.c_id and ex.s_id = s.s_id)
where
-- cleaning criteria
-- interesting data selection
ex.b_id = @bid
order by ex.b_id, ex.c_id, ex.s_id, ex.o_id,
ex.o_no, ex.e_id',
N'@bid int',
@bid = ?;
'''
通过使用 pandas read_sql
,从数据库中获取数据。
from sqlalchemy import create_engine
from sqlalchemy import event
import pandas as pd
pd.read_sql(query, conn, params=params, chunksize=None)
它抛出一个错误,如sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) 在“N” N'select ex.b_id, b.code, ..
解决方案
如果您阅读文档N'...'
,您会发现PostgresSQL中没有表单的字符串常量。所有字符串常量都具有相同的编码,由client_encoding
会话的设置指定。
推荐阅读
- javascript - 访问令牌错误 - 获取用户配置文件的图形 API
- python - 如何从列表中复制一些元素,这样就不会影响复制列表中元素的值
- java - xpath.evaluate 可以从节点(列表)获取输入吗?
- php - Laravel 外部类文件
- ios - iOS Swift 如何同步图表绘制线条、渐变和圆形动画?
- haskell - 如何处理一元返回值`m (Maybe Foo)`?
- ios - 如何从 ViewControllers 传递数据并将它们显示到 tableviewCell 中?
- url - 单击链接不起作用,但在浏览器中复制粘贴链接有效
- php - 无缓冲查询错误 - 如何在本地主机上获取它们
- r - 如何使用其他人的条件语句在数据框中添加具有相似名称的新变量?