Вставить выгруженную из словаря строку, содержащую символы utf8, в mysql в Python - PullRequest
0 голосов
/ 10 мая 2018

Я знаю, когда вы хотите вставить некоторые символы utf8 в mysql, вы просто кодируете свои символы следующим образом:

# ... set the db to utf8-friendly
# ... some connection initialization

stmt = """INSERT INTO test (id, name) VALUES (%s, %s)"""
cursor.execute(stmt, (1001, u"小明".encode("utf8"))
conn.commit()

# ... close connection

Но если у меня есть словарь, содержащий символы utf8, и я пишу скрипт следующим образом:

mydict = {u"名字": u"小明", "sex": "male"}
mydict_str = json.dumps(mydict)

stmt = """INSERT INTO test (id, params) VALUES (%s, %s)"""
cursor.execute(stmt, (1001, mydict_str))
conn.commit()    

Тогда я получил это:

---- + -----------
 ID  |    params
---- + -----------
1001 | {"\u540d\u5b57": "\u5c0f\u660e", "sex": "male"} # what I want here is {"名字": "小明"...}

Я пробовал это, но ничего не произошло, была вставлена ​​та же запись:

mydict = {u"名字".encode("utf8"): u"小明".encode("utf8"), "sex": "male"}

Какие-нибудь решения?

1 Ответ

0 голосов
/ 10 мая 2018

Вам нужно установить ensure_ascii=False при звонке json.dumps().

Например,

mydict_str = json.dumps(mydict, ensure_ascii=False)
...