【问题标题】:Get executemany to accept Unicode strings获取 executemany 以接受 Unicode 字符串
【发布时间】:2019-02-25 10:07:50
【问题描述】:

如何获得 executemany 来格式化准备好的 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 字符。

【问题讨论】:

    标签: python python-3.x character-encoding pymssql


    【解决方案1】:

    如何让 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 Profiler 显示查询被发送为

    SELECT COUNT(*) AS n FROM #tmp WHERE whatever = N'Ώπα'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 2011-12-24
      相关资源
      最近更新 更多