#python #sql
#python #sql
Вопрос:
Прошу прощения за этот простой вопрос. Но я действительно не нахожу ошибку в этом sql-заявлении (python):
cursor.execute('CREATE TABLE measure_%s (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ztime int(11), mvalue DOUBLE)', (ptype,))
«mvalue» имеет значения, подобные 12.34. Это означает два десятичных знака и значения от 0 до 40. Поэтому я думаю, что DOUBLE является правильным…
Это работает:
sql = """CREATE TABLE measure_""" ptype """ (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ztime int(11),
mvalue FLOAT(5,2) )"""
cursor.execute(sql)
Но я все еще не вижу разницы с первым.
Ответ №1:
Используйте заполнители DBAPI для значений, но не для операторов управления таблицей.
То есть "CREATE TABLE {}".format('mytable')
(форматирование Python),
но cur.execute("insert into people values (?, ?)", (who, age))
— цитирование базы данных, которая понимает различные типы.
http://ianhowson.com/a-quick-guide-to-using-mysql-in-python.html
Комментарии:
1. Как бы вы правильно написали мое первое утверждение (потому что есть и то, и другое)?