簡體   English   中英

如何使用帶有 python2.7 的 Pyodbc 在數據庫中插入 unicode 字符串

[英]How to insert unicode string in Database using Pyodbc with python2.7

下面是我的示例代碼:

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()

當我運行此代碼片段時,我得到 output 為“M?N?R?C”,因為我在編碼時使用了替換。 如果我不使用替換它會給出一個錯誤,不會對字符串進行編碼。 有人可以幫助如何在數據庫中使用 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM