最初のAWSラムダ関数(Pythonで)によって挿入された値が(別のMySqlクライアント接続を使用して)別のAWSラムダ関数で見えない理由を理解できません。ここに私がやっている:AWSラムダハンドラとMySQLデータベース。最初のクライアント接続で挿入された行が2番目のクライアント接続で表示されない
ハンドラA:
conn = DBConnectionFactory.create()
// conn.thread_id() returns X
ハンドラB:
conn = DBConnection.instance()
// conn.thread_id() returns Y
ハンドラA:次に
with conn.cursor() as cursor:
cursor.execute("INSERT INTO my_table (id, ...) VALUES ('myid', ...)")
conn.commit()
は、私は、コマンドラインで確認すること新しい行が正しく挿入されている - > OK
ハンドラーB:
ここで最後のクエリは新しく作成された行を返しません。どうして ? Howevere私はハンドラBとの新しい接続を使用する場合、それは動作します
ハンドラ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 !!
私は、ローカル・データベースでローカルにテストしてみた、それがうまく機能しています:
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