所以我的主要问题是,我错过了我的db连接字符串中的charset="utf8"
。在我有了之后,其他一切都很简单。
下面是我的一些测试代码,作为参考,以防其他人遇到相同的问题。它将特殊值插入到一个数据库中,然后从该数据库读取它们并将其插入到不同的数据库中。我使用了第三方工具来查询数据库并验证结果。我做的最后一个测试是基于名称的删除:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
db1 = MySQLdb.connect(host="10.100.10.2",
user="root",
passwd="",
db="db1",
charset="utf8"
)
db1.autocommit(True)
cur1 = db1.cursor()
db2 = MySQLdb.connect(host="10.100.10.2",
user="root",
passwd="",
db="db2",
charset="utf8"
)
db2.autocommit(True)
cur2 = db2.cursor()
valueSpecialCharacters = u"`[email protected]#$%^&*()_+[]\\;',./{}|:\"<>?"
valueSpecialCharacters2 = u"¢¥¦§©«¬®æƸɅɆɜʘɷɸӒӔӥӺӾسشصضطّ٦۞"
valueSpecialCharacters3 = u"۩ᴚᴇᴈᵺḈᵯἃἮᾝᾸ₨₸∑∏∆∂℮ⅎ₲∩∫≈≠≡≤≥⌂℗⅝⅞"
valueSpecialCharacters4 = u"⅓⅔⅛⅜⅍░▒▓■□▪▫▬▲►▼◄◊○◌●◘◙◦☺☻☼♀♂♠♣"
valueSpecialCharacters5 = u"♥♦♪♫♯ⱠⱡⱢⱣⱤⱥⱦⱧﭮצּרּﭓךּﺹﻏ﷼ﻪﻯﻴﻹ ﻼ"
sqlInsert = "INSERT INTO table (tableID, Name) VALUES (%s, %s);"
# Clean tables to make easier to see updates.
cur1.execute("DELETE FROM table")
cur2.execute("DELETE FROM table")
print "1: " + valueSpecialCharacters
args = "1", valueSpecialCharacters
cur1.execute(sqlInsert, args)
print "2: " + valueSpecialCharacters2
args = "2", valueSpecialCharacters2
cur1.execute(sqlInsert, args)
print "3: " + valueSpecialCharacters3
args = "3", valueSpecialCharacters3
cur1.execute(sqlInsert, args)
print "4: " + valueSpecialCharacters4
args = "4", valueSpecialCharacters4
cur1.execute(sqlInsert, args)
print "5: " + valueSpecialCharacters5
args = "5", valueSpecialCharacters5
cur1.execute(sqlInsert, args)
sqlSelect = "SELECT tableID, Name FROM table;"
cur1.execute(sqlSelect)
results = cur1.fetchall()
for row in results:
args = row[0], row[1]
print "args: %s", args
cur2.execute(sqlInsert, args)
# Test of deleting with utf-8
sqlDelete = "DELETE FROM table2 WHERE Name = %s;"
cur1.execute(sqlDelete, valueSpecialCharacters2)
db1.close()
db2.close()
问题是什么?所有这些都是unicode目前你可能只是插入他们....你到目前为止尝试过什么?你得到了什么错误?这可能对你有帮助http://stackoverflow.com/questions/6202726/writing-utf-8-string-to-mysql-with-python – 2014-09-04 23:47:16
我已经为别人交易了一堆错误。我记得的一件事是它抱怨拉丁文字。我很好奇,如果我需要将字符串解码为utf8或unicode,然后使用它。我仍然在玩它,我会明天看看你发送的链接,看看有没有睡眠可以帮助我明天更好地发现它。 – 2014-09-05 00:07:16
具体http://stackoverflow.com/a/6203001/541038这个回答 – 2014-09-05 00:08:38