Ich muss ein einfaches Projekt in Flask erstellen. Ich möchte SQLAlchemy nicht verwenden. Im folgenden Codefragment verwendet jeder, der eine Verbindung zum Server herstellt, dasselbe Verbindungsobjekt, aber für jede Anforderung wird ein neues Cursorobjekt erstellt. Ich frage das, weil ich Python DB API noch nie zuvor auf diese Weise benutzt habe. Ist es richtig? Soll ich für jede Anfrage ein neues Verbindungsobjekt anlegen oder für jede Anfrage oder die Methode unten das gleiche Verbindungs- und Cursorobjekt verwenden? Welches ist korrekt?Ist in WSGI-Anwendungen eine globale Datenbankverbindung zulässig?
import mysql.connector
from flask import Flask, request
app = Flask(__name__)
try:
con = mysql.connector.connect(user='root',password='',host='localhost',database='pywork')
except mysql.connector.Error as err:
print("Something went wrong")
@app.route('/')
def home():
cursor = con.cursor()
cursor.execute("INSERT INTO table_name VALUES(NULL,'test record')")
con.commit()
cursor.close()
return ""
Nachdem Sie darüber nachgedacht haben, dass Transaktionen (falls verfügbar) an die Verbindung und nicht an den Cursor gebunden sind, sollten Sie wahrscheinlich eine separate Verbindung pro Anfrage haben, sobald Ihre Datenbankbefehle eine Transaktion erfordern, um zu verhindern, dass Ihre Datenbank inkonsistent ist . – moooeeeep
@moooeeeep ja du hast Recht. Früher oder später verwenden wir das Verbindungsobjekt, um die Sql-Abfrage mit der Commit-Methode auszuführen. Daran hatte ich nicht gedacht. Danke für Ihre Hilfe. – amone