2013-06-17 3 views
1

У меня плохое время с операторами pymysql и python. Хотя я ничего не знаю о операторе python.Операторы Python pymysql

Я хочу вставить в базу данных некоторые значения. Код:

import pymysql 
conn = pymysql.connect(host='127.0.0.1', unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock', user='root', passwd='root', db='db2', charset='utf8') 
cur = conn.cursor() 
v = (123 , 'foobarfoobar', 'foo', 1241, 3, 132) 
cur.execute("INSERT INTO celebs(num_id, Text, Handle, Followers, RT, Timestamp) VALUES (?,?,?,?,?,?)", v) 

Для записи MySql структуры INT (PRI), INT, TEXT, VARCHAR, INT, INT, VARCHAR.

я запускаю это и я получаю TypeError: not all arguments converted during string formatting

Любые детали, как решить его и, возможно, какое-то объяснение, как оператор работа в питона. В PHP проще я думаю: $a = 22; echo "$a days";

Update:

Я использую непосредственно Вставлять в и она по-прежнему не вставляет данные:

cur.execute("INSERT INTO celebs (num_id, Text, Handle, Followers, RT, Timestamp) VALUES (123 , 'foobarfoobar', 'foo', 1241, 3, 132);" ) 
+0

v = ('123', 'foobarfoobar', 'foo', '1241', '3', '132') Добавить цитаты вокруг чисел будут делать их строками и должны избегать вашей проблемы. http://docs.python.org/2/library/stdtypes.html – RyPeck

ответ

4

Согласно source code, то paramstyle является format, так что вам нужно изменить ...

cur.execute("INSERT INTO ... VALUES (?,?,?,?,?,?)", v) 

... до ...

cur.execute("INSERT INTO ... VALUES (%s,%s,%s,%s,%s,%s)", v) 

Если вы используете механизм транзакционного хранилища, такой как InnoDB, вам придется явно совершить транзакцию, вызвав conn.commit() после выполнения запроса INSERT.

+0

К сожалению, я тоже пробовал это и не работал. 'SELECT', хотя и работает плавно. Кроме того, если я запустил запрос прямо к mySQL с значениями 'v', они вставлены правильно ... Я думаю, что pymysql работает некорректно. Я пытаюсь установить другие разъемы сейчас – Diolor

+0

@ DDL449 Каким образом это не сработало? Вы получили ту же ошибку или что-то еще? – Aya

+0

не было ошибки в скрипте, но он не вставлял значения в db – Diolor

0

я думаю, что ошибка в структура данных v. он должен быть список не кортеж

0

Проверьте двигатель mysql. Pymysql не работает с InnDB, но он отлично работает, когда я перешел из InnoDB в MyISAM.

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