我的本地postgresql数据库url的格式是什么?

18

我正在学习Flask/SQLAlchemy教程 https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html#a-minimal-application 我已经配置了数据库的URL为: postgres://username:password@localhost:5432/dbname

当我在交互式 Python shell 中运行 db.create_all() 时,它没有抛出任何错误,但也没有做任何事情。

据我所知,它应该创建一个名为 User 的表格,并带有三列:id、username 和 email。

from flask import Flask, url_for, render_template 
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://username:password@localhost:5432/dbname'

db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

app.debug = True



@app.route("/")
def hello():
    return render_template('hello.html')

if __name__ == "__main__":
    app.run()

你使用的是哪个驱动程序?驱动程序并不总是可选的 - dirn
@SpencerCooley 你能贴出你的 psql 查询吗?在此之前你是否已经执行了 create_db() 函数? - Nava
1
https://docs.sqlalchemy.org/en/13/core/engines.html#database-urls - code_dredd
3个回答

18

应该是精确的格式。

app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://username:password@localhost:port/DBNAME"

4
我们可以将用户名和密码的名称更改为更明确的名称吗?谢谢。 - JejeBelfort
虽然 'postgresql:///DBNAME' 在本地通过 Unix 域套接字连接时可以工作。 - undefined

1

安装完PostgreSQL后,您可以执行以下操作:

app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://<username>:<password>@localhost/<database_name>"

说明:

  • <username> 是您的用户名(默认为 postgres
  • <password> 是您的密码(默认为 postgres
  • <database_name> 是您的数据库名称(如果您正在使用安装 PostgreSQL 时创建的数据库,则默认为 postgres)。

如果您已经创建了一个名为 admin 的角色(用户),密码为 admin,并且有一个名为 posts 的数据库,则可以执行以下操作:

app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://admin:admin@localhost/posts"

更多信息可以在这里找到 https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/


0

是的,我确实尝试过那个,但是然后我进入psql控制台检查是否创建了任何新表,但是没有看到任何东西。 - Spencer Cooley
嗯...所以你可以通过psql使用相同的参数连接... postgres日志中有什么吗? - khampson
需要检查一下。我在 Mac OS 上使用 postgres.app,不确定是否会造成某种差异。刚刚找到这个链接 http://codeinthehole.com/writing/configuring-logging-for-postgresapp/ - Spencer Cooley
啊,是的,从那个链接看起来,默认情况下未启用日志记录。我通常在Ubuntu上使用从源代码编译的Postgres,所以对于postgres.app并不熟悉。它似乎是一个带有一些附加组件的打包版本的Postgres。 - khampson
Spencer Cooley - 你必须在Python中提交以使更改真正发生(自动提交默认应为关闭状态) - Mihail Gershkovich
v1.4.0b开始,需要使用postgresql[+driver]://...。SQLAlchemy不再支持postgres[+driver]://...形式。 - snakecharmerb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接