Ich habe ein seltsames Problem mit pymysql3 cursor.lastrowid Eigenschaft. Ich schreibe eine python3-Anwendung mit Threads. Es hat einen geöffneten pymysql3-Konnektor in einem Haupt-Thread und viele Funktionen, die wahllos/insert/update auf zufällige Weise tun können. Ich führe diese Funktionen in den Threads der Anwendung aus. Jede Funktion hat die nächste Konstruktion:pymysql3 cursor.lastrowid funktioniert manchmal nicht
def function...(link_to_connector)
....
cur = link_to_connector.cursor(pymysql.cursors.DictCursor)
cur.execute(...)
id = cur.lastrowid #Used only in INSERT constructions
cur.close()
...
Der Stecker wurde in der nächsten Art und Weise geöffnet:
self.connector = pymysql.connect(host, user, pass, db, charset='utf8')
self.connector.autocommit(True)
Alle funktionieren, aber manchmal cur.lastrowid gleich 0 nach einem frischen Einfügevorgang. Eine tatsächlich eingefügte Zeile in einem DB hat eine ID ungleich Null. Die DB ist MySQL mit InnoDB-Tabellen.
Könnte mir jemand helfen,
Was in diesem Fall läuft falsch?
Ist es eine gute Methode, den Cursor in jeder Funktion zu öffnen und zu schließen?