2014-07-22 1 views
0

저는 python과 sqlite3를 사용하여 데이터베이스를 작성하고 있습니다. 그리고 테이블과 일부 데이터를 만들 때 (터미널에서) "Select * From Data"명령을 사용하여이 데이터를 표시하려고했지만 데이터가 테이블에 삽입 된 다른 방법을 사용하여 선택했지만 데이터가 표시되지 않았습니다.Python with SQLite3 : select에 아무런 데이터도 표시되지 않습니다.

내 테이블 및 데이터 생성 방법 :

db = connect('database.db') 
db_cursor = db.cursor() 
db_cursor.execute("CREATE TABLE IF NOT EXISTS Data(Id INT, Name TEXT, City TEXT)") 
db_cursor.execute("INSERT INTO Data VALUES (1, 'ABC', 'XYZ')") 

내가 할 경우 데이터가 표시됩니다

db_cursor.execute("Select * From Data") 
print self.db_cursor.fetchall() 

합니다.

하지만 명령 줄을 실행 할 때 :

sqlite3 database.db 
sqlite> .mode column 
sqlite> .headers on 
sqlite> SELECT * FROM Data; 

데이터가 표시되지 않습니다. 사용 내역을 확인했습니다.

sqlite> .tables 

표가 올바르게 생성되었습니다. 명령 줄에서 sqlite3을 실행해도 데이터가 표시되지 않는 이유는 무엇입니까?

답변

2
당신은 그것을 영구적으로 데이터베이스의 일부입니다 전에 트랜잭션을 커밋 할 필요가

: 코드 블록이 성공적으로 실행하는 경우

db.commit() 

당신은 자동 커밋 데이터베이스 연결 as a context manager를 사용할 수 있습니다

with db: 
    db_cursor = db.cursor() 
    db_cursor.execute("INSERT INTO Data VALUES (1, 'ABC', 'XYZ')") 

DDL 문 (테이블 및 기타 데이터 정의 만들기)은 automatically committed이므로 데이터베이스에서 테이블을 보았지만 새 행에서는 볼 수 없습니다.

+0

@ 도움과 좋은 설명에 감사드립니다! – Rop

관련 문제