1

私はローカルのsqliteサーバーを持っています。SQLデータベースには、と呼ばれるテーブルのみが含まれていますflights。このテーブルには、とflightsの2つの列のみが含まれています。次のように作成されます。日時を表すことを意味します。この列には、各フライトの時刻と日付のスタンプが表示されます。この列は、各フライトの自動増分IDになることを目的としています。dtflightCREATE TABLE IF NOT EXISTS flight (dt INT NOT NULL, flight INT PRIMARY KEY);dtdtflight

次に、フライトを作成してIDを記録する必要があります。しかし、以下の私の方法は信じられないほど愚かだと思います。これよりも良い方法が必要です。以下のコードは機能しないため、私の試みの愚かさを増しています。現在のプリントを返します(None,)

さらに明確にするために、私がする必要があるのは、提供されたタイムスタンプでフライトを追加することだけです。次に、作成したフライトのIDを見つけます。十分に単純である必要があります。

t = (int(time.time()),)
conn, c = AT.startSQLdb()
c.execute("INSERT INTO flight VALUES (?,NULL);",t)
c.execute("SELECT flight FROM flight WHERE dt=?;",t)
print c.fetchone()
conn.commit()

ちなみに、AT.startSQLdb()はタプルを返すメソッドです(sql connection, sql cursor)。起動機能をすべてのスレッドで同じに保つための関数として持っています。

4

1 に答える 1

3

このSQLを使用して、最後に自動割り当てされたIDを選択できます。

SELECT last_insert_rowid()

ところで:あなたはスレッドについて言及していますが、SQLiteは同時アクセスには適していません。したがって、複数のスレッドには注意してください。

于 2012-07-04T02:50:06.447 に答える