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

问题描述 投票:0回答:4

我正在学习 Flask/sqlalchemy 教程 https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html#a-minimal-application 我将数据库网址配置为: postgres://用户名:密码@localhost:5432/dbname

当我在交互式 python shell 中运行 db.create_all() 时,它不会抛出任何错误,但也不会执行任何操作。

据我了解,应该创建包含三列的用户表; ID、用户名和电子邮件。

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()
python postgresql flask sqlalchemy
4个回答
18
投票

它应该是准确的格式。

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

1
投票

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

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

地点:

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

如果您创建了一个角色(用户),例如

admin
,密码为
admin
和名为
posts
的数据库,那么您可以执行以下操作:

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

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


0
投票

尝试在

URL
中使用 postgresql 而不是
postgres

这是用于 JDBCSQLAlchemy 文档 (http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html) 的形式。


0
投票

当我使用 Postgres 后端 URL 运行 celery 时遇到了同样的问题,并通过以下步骤解决了它!

pip install psycopg2-binary

添加了 Celery 后端 URL,如下所示

db+postgresql://postgres:1234@localhost/mydb

© www.soinside.com 2019 - 2024. All rights reserved.