我正在学习 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()
它应该是准确的格式。
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://username:password@localhost:port/DBNAME"
安装 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/
尝试在
URL中使用
postgresql
而不是 postgres
。
这是用于 JDBC 和 SQLAlchemy 文档 (http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html) 的形式。
当我使用 Postgres 后端 URL 运行 celery 时遇到了同样的问题,并通过以下步骤解决了它!
pip install psycopg2-binary
添加了 Celery 后端 URL,如下所示
db+postgresql://postgres:1234@localhost/mydb