【问题标题】:Connecting psycopg2 with Python in Heroku在 Heroku 中将 psycopg2 与 Python 连接起来
【发布时间】:2017-06-08 07:34:10
【问题描述】:
几天来,我一直在尝试在没有 Django 的情况下将我的 python 3 脚本连接到 Heroku 中的 PostgresSQL 数据库(psycopg2)。
我找到了一些文章和相关问题,但我不得不花费大量时间来获得一些我认为应该非常简单的东西,即使对于像我这样的新手也是如此。
我最终以某种方式使其工作,但希望发布问题(和答案)将帮助其他人更快地实现它。
当然,如果有人有更好的方法,请分享。
正如我所说,我有一个 python 脚本,我想使用 Heroku 从云中运行它。不涉及 Django(只是一个脚本/刮板)。
一开始我觉得有帮助的文章,即使它们还不够:
【问题讨论】:
标签:
python
postgresql
python-3.x
heroku
psycopg2
【解决方案1】:
主要步骤:
1.配置文件
Procfile 必须是:
worker: python3 folder/subfolder/myscript.py
2。 Heroku 插件
插件Heroku Postgres :: Database 必须添加到heroku 帐户中相应的个人应用程序中。
为了确保正确设置,this 非常有帮助。
3.带有数据库连接的 Python 脚本
最后,为了在我的 python 脚本myscript.py 中创建连接,我将this article 作为参考并将其改编为 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
)
要创建一个新数据库,this SO question 会解释它。关键是:
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
【解决方案2】:
您可以使用 SQLALCHEMY 库来完成。
首先,您需要使用 pip 安装 SQLALCHEMY 库,如果您的计算机上没有安装 pip,您将知道如何使用简单的 google 搜索
pip 安装 sqlalchemy
这里是代码 sn-p 做你想做的事:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
import os
# Put your URL in an environment variable and connect.
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
# Some variables you need.
var1 = 12
var2 = "Einstein"
# Execute statements
db.execute("SELECT id, username FROM users WHERE id=:id, username=:username"\
,{"id": var1, "username": var2}).fetchall()
# Don't forget to commit if you did an insertion,etc...
db.commit()