Я пытаюсь ввести файл формата json в свою базу данных.У меня есть некоторые значения Unicode в моем формате json.
для справки об ошибке Unicode, пожалуйста, смотрите эту ссылку: Получение ошибки Unicode при использовании оператора вставки
, которую я решил с помощью кодеков Описание для кодеков и решения, предоставленного вышеупомянутым решением.
Но теперь, когда я выполняю оператор вставки, в качестве заголовка я получаю ошибку.
Мой код Pythonвыглядит так:
import MySQLdb
import json
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="password", # your password
db="Mydb",) # name of the data base
cursor = db.cursor()
json_file = open('asda.txt', 'r' )
file_data = json.load(json_file)
print(file_data)
print(type(file_data))
datas = file_data['datads']
print(datas)
for data in datas:
print(data)
print()
print(data['first_col'])
ex_statement = u"INSERT INTO `tablename` (`id`, `xv`) VALUES ( {id '"+unicode(data['first_col'])+ u"'}, {xv '"+unicode(data['second_col'])+u"'});"
#ex_statement = "Insert into `tablename` values {first_col '"+str(data['first_col'])+"'}, {second_col '"+str(data['second_col'])+"'});"
cursor.execute(ex_statement)
cursor.commit()
db.close()
Мой файл Json выглядит так:
{"datads" :[{
"first_col" : "SoomeVAlue_1",
"second_col" : "SomeValue_1_1"
},
{
"first_col" : " Unicode_Start ֠ Unicode_End",
"second_col" : "SomeValue_2_2"
},
{
"first_col" : null ,
"second_col" : "SomeValue_2_2"
}
]}
Моя таблица выглядит следующим образом: Изображение базы данных
И после выполнения файлаЯ получаю сообщение об ошибке:
{u'datads': [{u'first_col': u'SoomeVAlue_1', u'second_col': u'SomeValue_1_1'}, {u'first_col': u' Unicode_Start \u05a0 Unicode_End', u'second_col': u'SomeValue_2_2'}, {u'first_col': None, u'second_col': u'SomeValue_2_2'}]}
<type 'dict'>
[{u'first_col': u'SoomeVAlue_1', u'second_col': u'SomeValue_1_1'}, {u'first_col': u' Unicode_Start \u05a0 Unicode_End', u'second_col': u'SomeValue_2_2'}, {u'first_col': None, u'second_col': u'SomeValue_2_2'}]
{u'first_col': u'SoomeVAlue_1', u'second_col': u'SomeValue_1_1'}
()
SoomeVAlue_1
{u'first_col': u' Unicode_Start \u05a0 Unicode_End', u'second_col': u'SomeValue_2_2'}
()
Unicode_Start ֠ Unicode_End
Traceback (most recent call last):
File "abc.py", line 35, in <module>
cursor.execute(ex_statement)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 188, in execute
query = query.encode(db.encoding)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u05a0' in position 85: ordinal not in range(256)
Пожалуйста, помогите мне с этой ошибкой.