我本地PostgreSQL数据库的URL格式是什么?

18 投票
3 回答
26341 浏览
提问于 2025-04-18 13:10

我正在学习一个关于flask和sqlalchemy的教程,链接在这里:https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html#a-minimal-application。我把我的数据库地址设置成了:postgres://username:password@localhost:5432/dbname。

当我在交互式的python环境中运行db.create_all()时,没有报错,但也没有任何反应。

根据我的理解,这个命令应该会创建一个用户表,里面有三个列: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()

3 个回答

0

试着在URL中使用postgresql,而不是postgres

这是在JDBCSQLAlchemy文档中都使用的格式(http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html)。

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/

18

这应该是完全一样的格式。

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

撰写回答