sql >> Databasteknik >  >> RDS >> Mysql

Sätt att undvika MySQLdbs kommandon osynkroniserade; du kan inte köra detta kommando nu (2014) undantag

DB-API försöker hantera transaktioner på egen hand, startar en transaktion på det första kommandot och har ett eget API-anrop för att utföra den, så:

cursor.execute( "CREATE TABLE t1 ( t1_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()
cursor.execute( "CREATE TABLE t2 ( t2_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()

Enligt min åsikt är detta ett allvarligt, påfallande designfel av Pythons DB-API, vilket gör det till ett allvarligt krångel att utföra kommandon utanför transaktioner och att ha ordentlig kontroll över transaktioner, t.ex. att använda saker som SQLites BEGIN EXCLUSIVE TRANSACTION . Det är som om någon utan riktig databaserfarenhet fick designa API:t...




  1. Infoga ett Python datetime.datetime-objekt i MySQL

  2. mysql motsvarande datatyper

  3. Hur man använder den länkade tabellhanteraren i Access 2016

  4. COUNT CASE och WHEN-sats i MySQL