如何获得执行力来格式化准备好的SQL以写入unicode数据?
我有一个与此相似的准备好的查询:
insert into foobar select(select baz.somestring from baz where baz.whatever = %s ), %s
在准备好的查询中将%s直接更改为类似N'%s'的方法将不起作用,如何使pymssql用N'mystring'而不是简单的'mystring'来封装输入?
例如,当出现类似\ u5000之类的东西时,当前行为会在表中产生问号,而它应该保存\ u5000或任何其他Unicode字符。
答案 0 :(得分:0)
如果创建适当的参数化查询,如何让pymssql用N'mystring'而不是简单的'mystring'来封装输入?
pymssql将执行以下操作:
print(sys.version) # 3.7.2 ...
print(pymssql.__full_version__) # 2.1.4
#
sql = "SELECT COUNT(*) AS n FROM #tmp WHERE whatever = %s"
params = ('Ώπα',)
crsr.execute(sql, params)
print(crsr.fetchone())
SQL事件探查器显示查询的发送方式为
SELECT COUNT(*) AS n FROM #tmp WHERE whatever = N'Ώπα'