如何使用Pyodbc和python2.7在数据库中插入unicode字符串



下面是我的示例代码:

import pyodbc
conn = pyodbc.connect(driver = '{SQL Server}', 
server = 'localhost', 
uid = 'sa', 
pwd = '1234', 
autocommit = True, trusted_connection='yes', database = 'DB')                       
Objcursor = conn.cursor()
mystring1 = "MÜNRÜC"
mystring = mystring1.decode("utf-8",'replace')
sql = "INSERT INTO system (name) VALUES ('%s')" %(mystring)
Objcursor.execute(sql)
conn.Commit()

当我运行这个代码片段时,我得到的输出是"M?N?R?C",因为我在编码时使用了替换。如果我不使用replace,它会给出一个错误。不要对字符串进行编码。有人能帮助如何在数据库中使用pyodbc插入unicode字符串而不替换字符/数据丢失吗。

首先,您可能会受到其他因素的限制,但最好停止使用python 2.7,因为它现在不受支持。

其次,您似乎还没有声明源文件的编码,所以mystring1 = "MÜNRÜC"可能没有按照您的想法进行

解决方案:

您应该明确声明源文件的编码,并且使用unicode对象(而不是python 2.7字符串(可能是明智的。你可以这样做:

# -*- coding: utf-8 -*-
import pyodbc
conn = pyodbc.connect(driver = '{SQL Server}', 
server = 'localhost', 
uid = 'sa', 
pwd = '1234', 
autocommit = True, trusted_connection='yes', database = 'DB')            
objcursor = conn.cursor()  # lowercase names
name_unicode = u"MÜNRÜC"  # descriptive variable name
sql = u"INSERT INTO system (name) VALUES ('%s')" % name_unicode  # unicode objects
objcursor.execute(sql)
conn.Commit()

相关内容

  • 没有找到相关文章

最新更新