2012-07-04 3 views
1

로컬 sqlite 서버가 있습니다. SQL 데이터베이스에는 flights이라는 테이블 만 포함됩니다. 이 테이블 flights에는 두 개의 열, 즉 dtflight 만 있습니다. 그것은 이렇게 창조된다 : CREATE TABLE IF NOT EXISTS flight (dt INT NOT NULL, flight INT PRIMARY KEY);. dt은 datetime을 나타냅니다. 이 열 dt에는 각 항공편의 시간 및 날짜 스탬프가 있습니다. flight 열은 각 항공편의 자동 증분 ID를 나타냅니다.Python Sqlite 행 추가하기

이제 항공편을 생성하고 ID를 기록해야합니다. 그러나 나는 아래의 나의 방법이 믿어지지 않는 정도로 어리 석다라고 생각한다. 이것보다 좋은 방법이 있어야합니다. 아래 코드는 작동하지 않으므로 내 시도의 어리 석음이 추가됩니다. 현재는 (None,) 인 쇄를 반환합니다.

명확한 설명을 위해 제공된 타임 스탬프가있는 항공편을 추가하기 만하면됩니다. 그런 다음 방금 만든 비행기의 이드를 찾으십시오. 충분히 단순해야합니다. 그런데

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)을 반환하는 방법이다. 필자는 모든 스레드에 대해 시작 기능을 동일하게 유지하는 기능으로 사용했습니다. , SQLite는 동시 접속이 잘되지 않습니다 당신은 스레드를 언급, 그래서 여러 스레드와주의 : BTW

SELECT last_insert_rowid() 

을 :

답변

3

는이 SQL에 마지막으로 자동 할당 된 ID를 선택할 수 있습니다.

+0

동일한 효과를 얻으려면 python에서 다음을 호출 할 수 있습니다. c.lastrowid – Robert