【问题标题】:Get data from Heroku Postgres externally using database url in python使用 python 中的数据库 url 从 Heroku Postgres 外部获取数据
【发布时间】:2021-05-02 21:16:26
【问题描述】:

我正在尝试从外部应用程序访问我的 Heroku 数据库。我有 Heroku 应用程序的 postgres url 的链接,但我无法从数据库中获取数据。我尝试了以下方法:

import psycopg2
import os

DB_URI=os.environ.get('DATABASE_URL') or 'sqlite:///'+os.path.join(basedir, 'app.db')

conn=psycopg2.connect(DB_URI)
cur=conn.cursor()
cur.execute("SELECT * FROM USER;")

print(cur.fetchone())

但是我得到了一个随机名称,而不是我需要的数据。有没有办法解决这个问题?

【问题讨论】:

    标签: python postgresql heroku


    【解决方案1】:

    这是连接数据库的正确方法。

    您与 Postgres 数据库的连接正常,因为 psycopg2 会引发 OperationalError 或其他类似问题。

    您使用SELECT * FROM USER 获得的“随机名称”实际上是您的 Postgres 用户名(Heroku 为您定义),这正是您通过执行此查询所要求的。

    您必须编写正确的 SQL 查询,这取决于您的需要。

    例如,如果您将数据存储在一个名为 myapp_mytable 的表中,cur.execute("""select * from myapp_mytable""") 将非常有用。

    【讨论】:

    • 那么用户表是否受限/预定义?
    • 是的,user 是保留关键字,不能用作通常的表名。
    • +1 在我的 sqlalchemy 中,我定义了一个名为 "user" 的表。为了从该表中获取信息,我不得不运行 SELECT * FROM "USER",因为不带引号的 user 受到限制。
    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    相关资源
    最近更新 更多