我正在尝试使用 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)