2012-11-27 4 views
1

저는 deploy on Heroku에 Python Flask 앱을 ​​쓰고 있습니다. 데이터베이스를 사용합니다. 지역 개발을 위해 Sqlite를 사용하고 싶습니다. 그러나 Heroku에 배포하면 Postgresql을 사용하고 싶습니다. 이것을 어떻게 할 수 있습니까?Heroku 로컬 상자에 다른 패키지를 요구하는 방법?

내 상자와 Heroku 서버간에 다른 패키지 집합을 요구하는 방법을 모르기 때문에 붙어 있습니다.


내가 그런 Bundler를 개발 및 생산에 적절한 패키지를 설치할 것입니다 내 Gemfile

gem "pg", :group => :production 
gem "sqlite3", :group => :development 

쓸 것이 루비 응용 프로그램이었다. 하지만 비슷한 워크 플로를 모르겠습니다. Python's pip

+0

현상금은이 질문에 대한 것이 었습니다. http://stackoverflow.com/questions/13868503/how-to-freeze-requirements-that-cant-be-satisfied-locally –

답변

8

글쎄, 해결해야 할 두 가지 사항이 있습니다.

먼저, requirements.txt은별로 문제가되지 않습니다. 동일한 requirements.txt 파일에 모든 요구 사항을 던지거나 두 데이터베이스 바인딩을 모두 설치해도 아무런 해가 없습니다. 그러나 분리하려는 경우에는 배포시 requirements.txt을 사용하고 로컬 개발에는 requirements-dev.txt을 사용하십시오.

더 중요한 것은 DB 설정 자체, 그리고 그것을 위해 당신은 하나의 라이너 솔루션이 있습니다 DATABASE_URL 이후

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get(
    'DATABASE_URL', 'sqlite:////tmp/test.db') 

는 Heroku가 설정하지만,하지에됩니다 (이 경우 확인), os.environ.get 지역 그것을 찾을 수 없기 때문에 sqlite 연결 문자열 인 기본값으로 되돌립니다.

+0

내가 원하는 것을 제외하고 나는 같은 상황에 처해있다. Postgres를 로컬에서 실행합니다. Postgres 연결 문자열은 무엇입니까? 감사. –

+1

'postgres : // localhost/dbname'? –

+0

그래, 알아 냈어. 포스트 그레스를 웬일인지 부적절하게 설치 했으니 다시 설치해야 작동 할 수있어. –