1

我有一个本地 sqlite 服务器。SQL 数据库只包含一个名为flights. 该表flights仅包含两列:dtflight。它是这样创建的:CREATE TABLE IF NOT EXISTS flight (dt INT NOT NULL, flight INT PRIMARY KEY);. dt表示日期时间。此列dt包含每个航班的时间和日期戳。该flight列是每个航班的自动增量 ID。

我现在需要创建航班并记录 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 回答