conn = MySQLdb.connect(host=IP,user='john',passwd='ab2nng',db='mydb')
cursor = conn.cursor()
#this works.
cursor.execute("select * from crawl_log")
res = cursor.fetchall()
print res
#this doesn't work.
cursor.execute("insert into crawl_log(k, v) values(%s, %s)", ('test','test'))
Откуда я знаю, почему это не сработало? Ошибок нет, ничего.Как проверить, почему мой запрос INSERT не работает?
Трудно сказать из документов модуля mysqldb, но вам могут понадобиться кавычки вокруг переменных подстановки, как в курсоре.execute («insert into crawl_log (k, v)» («% s», «% s») ", ('test', 'test')). Синтаксис% s выглядит как формат sprintf, подразумевая, что это замена текста и не связанные переменные ... но документ не говорит в любом случае. –
Как в стороне, при отладке кода базы данных иногда полезно разговаривать с вашей базой данных в интерактивном режиме (например, вводить SQL непосредственно в базу данных, используя phpMyAdmin или аналогичный.) Это помогает определить, является ли это ваш SQL-код неправильным, или ваш код Python, который неправильно. –