Ich kann nicht verstehen, warum Werte, die von einer ersten AWS-Lambda-Funktion (in Python) eingefügt wurden, von einer anderen AWS-Lambda-Funktion nicht sichtbar sind (mit einer anderen MySql-Clientverbindung). Hier ist, was ich tue:AWS Lambda-Handler und MySQL-Datenbank. Die eingefügte Zeile einer ersten Clientverbindung ist für eine zweite Clientverbindung nicht sichtbar.
Handler A:
conn = DBConnectionFactory.create()
// conn.thread_id() returns X
Handler B:
conn = DBConnection.instance()
// conn.thread_id() returns Y
Handler A:
with conn.cursor() as cursor:
cursor.execute("INSERT INTO my_table (id, ...) VALUES ('myid', ...)")
conn.commit()
Dann prüfe ich mit einer Befehlszeile, die das neue Zeile wurde korrekt eingefügt -> OK
Handler B:
// client B
with conn.cursor() as cursor:
cursor.execute("SELECT * FROM my_table WHERE id = 'myid'");
Hier die letzte Abfrage nicht zurück die neu erstellte Zeile. Warum ? Howevere, wenn ich eine neue Verbindung mit Handler B verwenden funktioniert es
Handler B:
conn = DBConnection.instance()
// conn.thread_id() returns Z
with conn.cursor() as cursor:
cursor.execute("SELECT * FROM my_table WHERE id = 'myid'");
// OK the row is found !!
Ich habe vor Ort mit einer lokalen Datenbank getestet und es funktioniert gut:
conn1 = DBConnectionFactory.create();
conn2 = DBConnectionFactory.create();
with conn2.cursor() as cursor:
cursor.execute("INSERT INTO my_table (id, ...) VALUES(X, ...)")
conn2.commit()
with conn1.cursor() as cursor:
cursor.execute('SELECT * FROM my_table WHERE id = X')
print(cursor.rowcount) // OK working I have 1 row