在 Heroku 中使用 Python 连接 psycopg2

J0A*_*NMM 6 python postgresql psycopg2 heroku python-3.x

几天来,我一直在尝试将我的 python 3 脚本连接到psycopg2Heroku 中的PostgresSQL 数据库(),而无需使用 Django。

我找到了一些文章和相关问题,但我不得不投入大量时间来获得一些我认为应该非常简单的东西,即使对于我这样的新手也是如此。

我最终让它以某种方式工作,但希望发布问题(和答案)将帮助其他人更快地实现它。

当然,如果有人有更好的方法,请分享。


正如我所说,我有一个 python 脚本,我想让它使用 Heroku 从云中运行。不涉及 Django(只是一个脚本/刮板)。

一开始我觉得很有帮助的文章,即使它们还不够:

J0A*_*NMM 10

主要步骤:

1.Procfile

Procfile 必须:

worker: python3 folder/subfolder/myscript.py
Run Code Online (Sandbox Code Playgroud)

2. Heroku 插件

附加Heroku Postgres :: Database已被添加到在Heroku的帐户适当的个人应用。

为了确保正确设置,非常有帮助。

3. 带db连接的Python脚本

最后,为了在我的 python 脚本中创建连接myscript.py,我将这篇文章作为参考并将其改编为 Python 3:

import psycopg2
import urllib.parse as urlparse
import os

url = urlparse.urlparse(os.environ['DATABASE_URL'])
dbname = url.path[1:]
user = url.username
password = url.password
host = url.hostname
port = url.port

con = psycopg2.connect(
            dbname=dbname,
            user=user,
            password=password,
            host=host,
            port=port
            )
Run Code Online (Sandbox Code Playgroud)

要创建一个新数据库,this SO question解释了它。关键线是:

con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
Run Code Online (Sandbox Code Playgroud)