2012-05-25 2 views
0

Я пытаюсь вставить данные в MySQL с помощью Python. При вводе , _, и , :-) в базу данных.Не удается вставить дату в MySQL

TypeError: not all arguments converted during string formatting    

В кодах:

emoticons = 'C:/Users/user/Desktop/emoticons.txt' 
csv_data = csv.reader(open(emoticons, 'rb')) 
count = 0 
for row in csv_data: 
    count = count + 1 
    c.execute("INSERT INTO Emoticons (Emotions) VALUES (%s)", row) 
db.close() 

ли я что-то пропустил в кодах? Вы предлагаете?

ответ

0
csv.reader(open(emoticons, 'rb')) 

читает файл в формате CSV с запятой в качестве разделителя по умолчанию и возвращает список (переменная row).

c.execute("INSERT INTO Emoticons (Emotions) VALUES (%s)", row) 

ждет кортежа row ровно с одним элементом (потому что в строке запроса один %s).

Возможно, что ваш файл содержит запятые, и эти строки будут разделены на несколько элементов, которые не могут быть отформатированы в запросе.

Если вы хотите вставить целые строки из файла в БД, вы не должны использовать csv:

emoticons = 'C:/Users/user/Desktop/emoticons.txt' 
with open(emoticons, 'r') as f: 
    for row in f: 
     c.execute("INSERT INTO Emoticons (Emotions) VALUES (%s)", (row,)) 
db.close() 
+0

Почему его ждет кортеж в строке? Его ждет строка. – Denis

+0

@Denis: http://mysql-python.sourceforge.net/MySQLdb.html#connection-objects «Почему кортеж? Поскольку API БД требует, чтобы вы передавали любые параметры в виде последовательности». – eumiro

+0

Где вы видите здесь ошибку db? Она должна разместить% на правильном месте. – Denis

Смежные вопросы