1
我有点好奇什么是pythonic /最好的方式来解决我的问题。pymssql utf8:查询反斜杠
一个简短的代码示例:
import pymssql
conn = pymssql.connect("SERVER", 'sa', 'PASSWORD', 'DATABASE', charset='utf8')
cursor = conn.cursor()
sql = "SELECT 'foo\bar' as bs_field"
cursor.execute(sql)
row = cursor.fetchone()
print row[0]
# missing \, returns u'foobar'
sql = "select FIELD_CONTAINING_BACKSLASH from TABLE"
cursor.execute(sql)
row = cursor.fetchone()
print row[0]
# all OK here
sql = "SELECT 'foo\\bar' as bs_field"
cursor.execute(sql)
row = cursor.fetchone()
print row[0]
# this is OK too
我想知道为什么\丢失在第一个例子 - 有没有更好的解决方案,报价每一个SQL?
的确。请注意,在* some *数据库中(例如,MySQL的默认设置和PostgreSQL的旧版本),反斜杠确实很特殊,您需要编写'r'SELECT'foo \\ bar'“'或'”SELECT'foo \\\\吧'“'。这不是符合ANSI SQL标准的行为,SQL Server也不这样做,但混淆是使用参数化查询而不是SQL字符串文字的另一个好理由。 – bobince
的确,我大部分时间都在使用这些功能,但是如果您忘记了python的基础知识,它并没有帮助:-) –