PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

cursor.execute(INSERT INTO im_entry.test (+entrym+) СТОЙНОСТИ ('+p+');)

По подразбиране psycopg2 автоматично стартира транзакции вместо вас, което означава, че трябва да му кажете да се ангажира. Обърнете внимание, че commit е метод на connection , а не cursor .

conn = psycopg2.connection('...')
cur = conn.cursor()
cur.execute("...")
conn.commit()

Целта е, че можете да групирате няколко израза заедно в една транзакция, така че другите заявки няма да виждат полунаправени промени, но също и поради съображения за ефективност.

Също така имайте предвид, че винаги трябва да използвате заместители, вместо да свързвате низове заедно.
Напр.:

cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])

В противен случай рискувате да направите възможни атаки с инжектиране на SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свързвам SQL променливи в PHP?

  2. alembic util грешка в командата не може да намери идентификатор

  3. Свързване с Heroku Postgres от Spring Boot

  4. Върнете типа на таблицата от функция A в PostgreSQL

  5. psycopg2 всъщност не вмъква данни