2013-09-03 2 views
3

sqlite db를 만들고 호스팅에 업로드했습니다. 그런 다음sqlite3.DatabaseError : 파일이 암호화되었거나 데이터베이스가 아닙니다

나는 sqlite가 사용하는 경우 발생하지 않는

DatabaseError (file is encrypted or is not a database).

urllib.urlretrieve('http://%s/%s' % (HOST, NAME_DB), NAME_DB) 
con = sqlite3.connect(NAME_DB) 
cur = con.cursor() 
cur.execute('insert into log(date, count, average) values(date("now"), ?, ?)', (1, 1.2)) 
con.commit() 
con.close() 

Traceback (most recent call last): 
    File "mylog.py", line 17, in <module> 
    cur.execute('insert into log(date, count, average) values(date("now"), ?, ?)', (1, 1.2)) 
sqlite3.DatabaseError: file is encrypted or is not a database 

이러한 오류를 반환) (내 스크립트를 검색하고 일부 데이터를 삽입하지만 실행하기 위해 노력하고있어 CLI를 사용하여 데이터를 삽입하십시오. 저 좀 도와 주 시겠어요?

+0

가능한 중복을 해결되었다/questions/211501/using-sqlite-in-a-python-program –

+0

당신은 [이것도 보아라] (http://trac.edgewall.org/wiki/PySqlite#DatabaseError:fileisencryptedorisnotadatabase) 할 수있다. 권한 문제이거나 파일 (경로)가 존재하지 않습니다. –

+0

파일이 실제 DB이므로이를 열고 CLI에서 데이터를 삽입하면 완벽하게 작동합니다. 그래서 같은 문제가 아닙니다. – sogeking

답변

8

sqlite CLI와 python sqlite API 사이의 버전이 일치하지 않습니까? CLI 대신 스크립트에서 데이터베이스를 다시 만들었습니다. 이제 스크립트에서 작업을 삽입하고 선택합니다 (CLI에서는 수행 할 수 없음). $ sqlite -version은 2.8.17을 반환하고 python 버전은 2.7.3을 반환합니다.

3

나중에 SQLite3의 Python 2.7 버전에서 액세스 한 SQLite3 라이브러리를 사용하여 C++ 코드로 만든 데이터베이스에서 동일한 문제가 발생했습니다. 파이썬 스크립트로 데이터베이스를 쿼리 할 수 ​​없었습니다. 컴퓨터의 문제를 해결하기 위해 C++ Sqlite 라이브러리 디렉토리에있는 버전은

C:\Python27\DLLs\sqlite3.dll

으로 변경했습니다.

0

이 좋아 저도 같은 문제에 직면하고 Visionnaire 말했듯이 그냥 원래 sqlite3.exe 들어있는 CLI sqllite 폴더에 sqlite3.dll으로 pythonXX\DLLs에서 sqlite3.dll을 교체하고 문제가 http://stackoverflow.com의

관련 문제