0

我有一个基于 web.py 和 peewee 的小程序。部署到 heroku 很顺利,我有一个数据库正在运行,但是如何配置 peewee 以使用 heroku postgress 数据库?

peewee 文档没有透露任何有用的信息http://peewee.readthedocs.org/en/latest/peewee/api.html#PostgresqlDatabase

我努力了

db = PostgresqlDatabase('database', user='user', password='password', host='host')

忘记了“heroku 日志”中的日志片段

2013-04-15T17:11:21.093479+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/peewee.py", line 1639, in connect
2013-04-15T17:11:21.093255+00:00 app[web.1]:   File "/app/myapp.py", line 5, in <module>
2013-04-15T17:11:21.093479+00:00 app[web.1]:     self.__local.conn = self._connect(self.database, **self.connect_kwargs)

更新 我试图将 postgresql 设置更改为

db = PostgresqlDatabase("dbname='template1' user='dbuser' host='localhost' password='dbpass'")

现在我得到

2013-04-16T19:11:02.345227+00:00 app[web.1]:     db.connect()
2013-04-16T19:11:02.345227+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/peewee.py", line 1639, in connect
2013-04-16T19:11:02.345227+00:00 app[web.1]:     self.__local.conn = self._connect(self.database, **self.connect_kwargs)
2013-04-16T19:11:02.345227+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/peewee.py", line 1810, in _connect
2013-04-16T19:11:02.345582+00:00 app[web.1]:     return psycopg2.connect(database=database, **kwargs)
2013-04-16T19:11:02.345582+00:00 app[web.1]:     conn = _connect(dsn, connection_factory=connection_factory, async=async)
2013-04-16T19:11:02.345582+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect
2013-04-16T19:11:02.345582+00:00 app[web.1]: psycopg2.OperationalError: could not connect to server: No such file or directory
2013-04-16T19:11:02.345582+00:00 app[web.1]:    Is the server running locally and accepting
2013-04-16T19:11:02.345582+00:00 app[web.1]:    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
4

2 回答 2

1

我在这里找到了答案http://initd.org/psycopg/docs/module.html,经过几个小时的谷歌搜索和测试,正确的连接方式是

db = PostgresqlDatabase(
    database='',
    user='',
    password='',
    host='',
    port='5432'
  )

这让 peewee 连接到 Heroku 上的 postgresql

于 2013-04-16T19:37:39.993 回答
-1

如果您在解释器启动时不知道数据库的配置,您可以“推迟”初始化并在运行时设置数据库连接参数:

http://peewee.readthedocs.org/en/latest/peewee/cookbook.html#deferring-initialization

于 2013-04-20T17:12:36.830 回答