Проблема со вставкой и psycopg2 - PullRequest
2 голосов
/ 26 мая 2010

Я новичок в Python и psycopg2, и у меня проблемы с простой вставкой.

Это мой стол:

CREATE TABLE tabla
(
codigo integer NOT NULL DEFAULT nextval('dato_codigo_seq'::regclass),
informacion character(30) NOT NULL,
CONSTRAINT dato_pkey PRIMARY KEY (codigo)
)

Поле codigo является серийным.

Когда я делаю предложение:

cursor.execute("INSERT INTO tabla informacion) VALUES (%s)",("abcdef"))

PostgreSQL выдает исключение.

Я должен сделать

cursor.execute("INSERT INTO tabla (codigo,informacion) VALUES (nextval(%s),%s)",
            ("dato_codigo_seq","abcdef"))

где dato_codigo_seq - последовательность в поле codigo.

Мой вопрос: могу ли я сделать предложение вроде

insert into tabla(informacion)values('asdsa')

и позволить PostgreSQL обрабатывать обработку последовательного поля?

Я могу сделать это:

cursor.execute("INSERT INTO tabla informacion) VALUES ("+valor+")")"

но это предложение можно использовать для атаки с помощью SQL-инъекции.

Вот и все. Спасибо за чтение моего вопроса и извините за мой плохой английский (я говорю по-испански).

Ответы [ 2 ]

4 голосов
/ 26 мая 2010
cursor.execute("""insert into tabla (informacion) VALUES (%s);""",(asdas,))

это решение

0 голосов
/ 10 февраля 2014

в вашем примере:

cursor.execute("INSERT INTO tabla informacion) VALUES (%s)",("abcdef",))
...