sqliteの。 last_insert_rowid以外の挿入、(後に自動インクリメント主キーの値を取得する方法)?
質問
私は、フラスコのマイクロフレームでsqlite3のを使用していますが、唯一この質問への懸念物事ののSQLite側..
ここでは、コードのスニペットがあります:
g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()
downloads
テーブルは、以下の属性を持つ別の列を有している:id integer primary key autoincrement,
2人が同時に書き込む場合は、上記のコードは、エラーが発生する可能性があります。
トランザクションが乱雑することができます。 SqliteをできちんとしたINSERTを実行した後に生成された主キーを返す方法で構築?
あり解決
あなたがそれをやっている方法が有効です。上記のスニップは、2つのスクリプトで同時に実行された場合、問題があってはなりません。 last_insert_rowid()
はそれを呼び出す接続するための最新のINSERT文のROWIDを返します。またg.db.lastrowid
を行うことでROWIDを取得することができます。
所属していません StackOverflow