2016-11-25 3 views
0

python을 사용하여 데이터베이스에 액세스하려고합니다. src 폴더는 다음과 같습니다sqlite 데이터베이스의 설치 경로

ptbl/ 
├── dialogue.py 
├── elem_H.py 
├── elems.db 
├── __init__.py 
├── __main__.py 
├── main.py 
├── menubar.ui 
└── menu.py 

같은 데이터베이스 elems.db 액세스 elem_H.py로 :

sqlfile = "elems.db" 
conn = sqlite3.connect(sqlfile) 

내가 SRC 디렉토리 (ptbl) 내부 터미널에서 그것을 실행하고 당연히, 모든 것이 잘 작동합니다. 나는 그것이 autotools를 사용하여 설치하는 경우,

sqlite3.OperationalError: no such table: Overview 

과 같은 : 나는 src 디렉토리 밖에 생각 할 때 하지만, 그 오류를 제공합니다.

elems.db가 작동하려면 elems.db가있는 폴더에서 실행해야합니다.

어떻게 경로에 설치할 수 있습니까?

+0

'elems.db'는 (는) 응용 프로그램에 '포함'되어 있습니까? 아니면 다른 곳에있을 수 있습니까? –

+0

은 별도의 파일이므로 어디서나 존재할 수 있습니다. – BaRud

+0

그러면'sqlfile'을 구성 가능한 매개 변수로 만들어야합니다. 명령 줄 인수로 전달하거나 구성 파일에서 읽습니다. 그렇다면 절대 경로를 절대적으로 만들 수 있습니다. –

답변

0

하나의 디렉토리에 파이썬과 SQLite 파일을 섞어 쓰는 것은 좋은 방법이 아닙니다. 문제를 해결하고 라이브러리 디렉토리에서 elems.db을 추출해야합니다.

또한 Lutz Horn이 의견으로 말했듯이 구성 가능하도록 설정해야하며 데이터베이스 파일이 항상 동일한 위치에있을 것이라는 점을 신뢰하지 않아야합니다.

어쨌든이 두 점을 업데이트하지 않고 문제를 해결하려면 elem_H.py 위치를 알아야합니다. 당신은 elems.db이 옆에 알고, 그래서 당신은 할 수 있습니다 :

import os.path 
sqlfile = os.path.join(os.path.dirname(__file__), "elems.db") 
  • __file__ 저장 상대 경로를 당신이 명령을 실행 장소에서 파일에.
  • os.path.dirname 주어진 경로에서 파일 이름을 제거하십시오.
  • os.path.join은 계산 된 경로와 파일 이름을 연결합니다.
관련 문제