我有以下python代码将数据推送到db:
cursor.execute("INSERT INTO "+ DATA_TABLE + """ (fk_id, title, streetaddress,json)
values (%(fk_id)s, %(title)s, %(address)s, %(json)s ) """ ,(
result))
但我收到错误:
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 185, in unicode_literal
return db.literal(u.encode(unicode_literal.charset))
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256)
是因为%s期望值是一个有效的latin-1字符串,而dict给它一个utf-8字符串?什么是干净的解决方法?
注意:使用json.dumps
安全地创建json。它有几个不同语言的字符。
答案 0 :(得分:4)
你应该尝试在unicode中转换所有字符串
cursor.execute(u"INSERT INTO "+ unicode(DATA_TABLE) + u""" (fk_id, title, streetaddress,json)
values (%(fk_id)s, %(title)s, %(address)s, %(json)s ) """ ,(
result))
并传递charset =“utf-8”以按http://mysql-python.sourceforge.net/MySQLdb.html
中的指定进行连接答案 1 :(得分:0)
我不认为这是python%s格式代码的问题。根据{{3}},它可以格式化unicode而不会出现问题。但请注意,生成的字符串将是unicode。
您是否查看了所有相关问题,例如: python string formatting documentation?