2016-04-12 17 views
0

pymysql3 cursor.lastrowidプロパティに奇妙な問題があります。私はスレッドpython3アプリケーションを書いています。これは、メインスレッドにpymysql3コネクターをオープンしており、選択/挿入/更新をランダムに行うことができる多くの機能を備えています。私はアプリケーションのスレッドでこれらの関数を実行します。pymysql3 cursor.lastrowidが動作しない場合があります

self.connector = pymysql.connect(host, user, pass, db, charset='utf8') 
self.connector.autocommit(True)  

すべてが正常に動作しますが、時々新鮮な挿入操作の後に0に等しいcur.lastrowid:

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() 
    ... 

コネクタは、次の方法で開かれました:すべての機能は、次の構成を有しています。 DB内の実際に挿入された行には、ゼロ以外のIDがあります。 DBはInnoDBテーブルを持つMySQLです。

誰もが、この場合には間違っ起こっている

  1. 何、私を助けてもらえますか?

  2. すべての機能でカーソルを開いて閉じるのは良い方法ですか?

答えて

1

私はこの問題を解決しました。なぜなら、pymysql.connector()オブジェクトはスレッドセーフなものではないからです。

関連する問題