使用 Flask 创建 PostgreSQL 数据库时出错

时间:2021-06-17 23:01:13

标签: python flask sqlalchemy psycopg2

我正在尝试使用 Flask 在 PostgreSQL 数据库中创建一个表。

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from send_mail import send_mail

app = Flask(__name__)

ENV = 'dev'

if ENV == 'dev':
    app.debug = True
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:0151@localhost:5432/reserva'
else:
    app.debug = False
    app.config['SQLALCHEMY_DATABASE_URI'] = ''

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)


class Feedback(db.Model):
    __tablename__ = 'feedback'
    id = db.Column(db.Integer, primary_key=True)
    customer = db.Column(db.String(200), unique=True)
    dealer = db.Column(db.String(200))
    rating = db.Column(db.Integer)
    comments = db.Column(db.Text())

    def __init__(self, customer, dealer, rating, comments):
        self.customer = customer
        self.dealer = dealer
        self.rating = rating
        self.comments = comments


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


@app.route('/submit', methods=['POST'])
def submit():
    if request.method == 'POST':
        customer = request.form['customer']
        dealer = request.form['dealer']
        rating = request.form['rating']
        comments = request.form['comments']
        # print(customer, dealer, rating, comments)
        if customer == '' or dealer == '':
            return render_template('index.html', message='Please enter required fields')
        if db.session.query(Feedback).filter(Feedback.customer == customer).count() == 0:
            data = Feedback(customer, dealer, rating, comments)
            db.session.add(data)
            db.session.commit()
            send_mail(customer, dealer, rating, comments)
            return render_template('success.html')
        return render_template('index.html', message='You have already submitted feedback')


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

当我尝试运行 db.create_all() 时抛出此错误:

Traceback (most recent call last):
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3211, in _wrap_pool_connect
    return fn()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 307, in connect
    return _ConnectionFairy._checkout(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 767, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 425, in checkout
    rec = pool._do_get()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\impl.py", line 146, in _do_get
    self._dec_overflow()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\impl.py", line 143, in _do_get
    return self._create_connection()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 253, in _create_connection
    return _ConnectionRecord(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 368, in __init__
    self.__connect()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 611, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 605, in __connect
    connection = pool._invoke_creator(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\create.py", line 578, in connect
    return dialect.connect(*cargs, **cparams)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\default.py", line 584, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\flask_sqlalchemy\__init__.py", line 1094, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\flask_sqlalchemy\__init__.py", line 1086, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\sql\schema.py", line 4739, in create_all
    bind._run_ddl_visitor(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3077, in _run_ddl_visitor
    with self.begin() as conn:
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 2993, in begin
    conn = self.connect(close_with_result=close_with_result)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3165, in connect
    return self._connection_cls(self, close_with_result=close_with_result)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
    else engine.raw_connection()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3244, in raw_connection
    return self._wrap_pool_connect(self.pool.connect, _connection)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3214, in _wrap_pool_connect
    Connection._handle_dbapi_exception_noconnection(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 2068, in _handle_dbapi_exception_noconnection
    util.raise_(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\base.py", line 3211, in _wrap_pool_connect
    return fn()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 307, in connect
    return _ConnectionFairy._checkout(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 767, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 425, in checkout
    rec = pool._do_get()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\impl.py", line 146, in _do_get
    self._dec_overflow()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\impl.py", line 143, in _do_get
    return self._create_connection()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 253, in _create_connection
    return _ConnectionRecord(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 368, in __init__
    self.__connect()
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 611, in __connect
    pool.logger.debug("Error on connect(): %s", e)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\pool\base.py", line 605, in __connect
    connection = pool._invoke_creator(self)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\create.py", line 578, in connect
    return dialect.connect(*cargs, **cparams)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\sqlalchemy\engine\default.py", line 584, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "C:\Users\janju\Documents\Apps\WEB\PRUEBAS\PYTHON\FLASK\app_flask\env\lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError)
(Background on this error at: http://sqlalche.me/e/14/e3q8)

0 个答案:

没有答案
相关问题