Der SQLAlchemy-Verbindungspool gibt immer ein zwischengespeichertes Ergebnis zurück [geschlossen]
Posted: 05 Jan 2025, 14:07
Ich verwende den folgenden Code, um Verbindungspooling zu erstellen und SQL-Abfragen auszuführen.
Ich habe jedoch festgestellt, dass die von mir erstellte Verbindung manchmal eine zwischengespeicherte DB zurückgibt:
Z.B. Ich führe die SQL-Funktion „validatePW“ aus, um Token basierend auf einer DB-Tabelle zu validieren. Ich habe zwei Benutzer: A und B mit unterschiedlichen Passwörtern. Das Passwort von Benutzer A ist „PW1“.
Wenn ich pandas.read_sql(sql="select validatePW('A', 'PW1')", con=connection), ich habe eine True-Rückgabe erhalten, die wie erwartet ist. und wenn ich pandas.read_sql(sql="select validatePW('B', 'PW1')", con=connection) zum ersten Mal ausführe, erhalte ich eine False-Rückgabe (B< /strong>s Passwort ist nicht „PW1“).
Wenn ich nun diese beiden Abfragen nacheinander ausführe, werden die Ergebnisse komisch
Ich werde zwei True-Rückgaben erhalten, obwohl ich erwarte, dass die zweite Abfrage ein False zurückgeben würde. Es scheint, als würde die Verbindung ein zwischengespeichertes Ergebnis aus der vorherigen Ausführung zurückgeben. Warum ist das so? Gibt es eine Möglichkeit, dies zu vermeiden?
Code: Select all
engine = sqlalchemy.create_engine(
f'mysql+pymysql://{usr}:{pw}@{db_config["host"]}:{db_config["port"]}/'
f'{sub_db}', pool_size=24, max_overflow=40, poolclass=pool.QueuePool)
connection = engine.connect()
pandas.read_sql(sql=my_query, con=connection)
Z.B. Ich führe die SQL-Funktion „validatePW“ aus, um Token basierend auf einer DB-Tabelle zu validieren. Ich habe zwei Benutzer: A und B mit unterschiedlichen Passwörtern. Das Passwort von Benutzer A ist „PW1“.
Wenn ich pandas.read_sql(sql="select validatePW('A', 'PW1')", con=connection), ich habe eine True-Rückgabe erhalten, die wie erwartet ist. und wenn ich pandas.read_sql(sql="select validatePW('B', 'PW1')", con=connection) zum ersten Mal ausführe, erhalte ich eine False-Rückgabe (B< /strong>s Passwort ist nicht „PW1“).
Wenn ich nun diese beiden Abfragen nacheinander ausführe, werden die Ergebnisse komisch
Code: Select all
pd.read_sql(sql="select validatePW('A', 'PW1')", con=connection)
pd.read_sql(sql="select validatePW('B', 'PW1')", con=connection)