Python: вставка строки в базу данных с форматированием - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь вставить строку в таблицу, которую я настроил в базе данных.

Мой код:

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES(%s, %s, %s, %s, timestamp, comport)""",[(prefix, code_id, answer, station)])

Я получаю сообщение об ошибке, в котором говорится, что ему не нравится то, что в "[]".

Я не знаюне совсем понимаю, как работает "% s".Я перепробовал много примеров, и все меня подвели.

Я получил этот пример от http://mysql -python.sourceforge.net / MySQLdb.html

Ответы [ 3 ]

2 голосов
/ 01 июля 2011

Почему у вас есть параметры в двух наборах скобок? Второй аргумент должен быть последовательностью, содержащей четыре элемента, чтобы соответствовать четырем %s s в вашем запросе. Вместо этого вы дали ему список, содержащий один элемент: этот элемент представляет собой последовательность с четырьмя элементами.

Вместо этого попробуйте:

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES(%s, %s, %s, %s, timestamp, comport)""",(prefix, code_id, answer, station))
0 голосов
/ 01 июля 2011
cursor.execute('INSERT INTO scan (prefix, code_id, answer, station) VALUES("%s", "%s", "%s", "%s")' %(prefix, code_id, answer, station))

Вы можете получить ошибку, если пропустите "" вокруг %s, т.е. если вы просто используете %s вместо этого "%s" в значениях.

0 голосов
/ 01 июля 2011

Вы можете использовать новый строковый метод Python 'format':

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES({}, {}, {}, {}, timestamp, comport)""".format(prefix, code_id, answer, station))

Вы также можете нумеровать параметры, такие как "{0}", "{1}" искоро.Это может потребоваться в зависимости от вашей версии Python (я думаю, что 2.6 уже поддерживает параметры без нумерации).

Для справки по использованию, проверьте http://docs.python.org/library/string.html#format-examples

...