使用SQLAlchemy/Mysq将Flaskpost数据发送到表中

2024-10-06 10:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Pythonanywhere上的Flask/Python/SQLAlchemy将数据从html表单写入MySQL表。Mysql表已经设置好了,我可以在/transactions上输入数据,但是它会崩溃。。。在

Mysql数据库:

mysql> DESCRIBE transactions1;
+----------------+---------------+------+-----+---------+----------------+
| Field          | Type          | Null | Key | Default | Extra          |
+----------------+---------------+------+-----+---------+----------------+
| trans_id       | int(11)       | NO   | PRI | NULL    | auto_increment |
| Item           | varchar(4096) | YES  |     | NULL    |                |
| Shack          | varchar(4096) | YES  |     | NULL    |                |
| Paym_Reference | varchar(20)   | YES  |     | NULL    |                |
| Amount         | varchar(10)   | YES  |     | NULL    |                |
+----------------+---------------+------+-----+---------+----------------+

HTML:'事务处理.html':

^{pr2}$

代码:

from flask import Flask, render_template, request, redirect, url_for, session, flash
import sys
from functools import wraps
from flask.ext.sqlalchemy import SQLAlchemy

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="username",
    password="password",
    hostname="hostname",
    databasename="databsename",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
db = SQLAlchemy(app)

class Transactions1(db.Model):
     __tablename__ = "transactions1"

     trans_id = db.Column(db.Integer, primary_key=True)
     Item = db.Column(db.String(4096))
     Shack = db.Column(db.String(4096))
     Paym_Reference = db.Column(db.VARCHAR(20))
     Amount = db.Column(db.VARCHAR(10))



@app.route('/transactions', methods=['GET', 'POST'])
def transactions():
    if request.method == 'GET':
        return render_template('Transactions.html')
    sale = transactions1(content=request.form["Item"])
    sale1 = transactions1(content=request.form["Shack"])
    sale2 = transactions1(content=request.form["Paym_Reference"])
    sale3 = transactions1(content=request.form["Amount"])
    db.session.add(sale)
    db.session.add(sale1)
    db.session.add(sale2)
    db.session.add(sale3)
    db.session.commit()
    return render_template('Transactions.html')

完全错误:

2017-03-03 12:26:03,396 :Error running WSGI application
2017-03-03 12:26:03,398 :NameError: global name 'transactions1' is not defined
2017-03-03 12:26:03,398 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 2000, in __call__
2017-03-03 12:26:03,399 :    return self.wsgi_app(environ, start_response)
2017-03-03 12:26:03,399 :
2017-03-03 12:26:03,399 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1991, in wsgi_app
2017-03-03 12:26:03,399 :    response = self.make_response(self.handle_exception(e))
2017-03-03 12:26:03,399 :
2017-03-03 12:26:03,399 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1567, in handle_exception
2017-03-03 12:26:03,399 :    reraise(exc_type, exc_value, tb)
2017-03-03 12:26:03,399 :
2017-03-03 12:26:03,399 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1988, in wsgi_app
2017-03-03 12:26:03,399 :    response = self.full_dispatch_request()
2017-03-03 12:26:03,399 :
2017-03-03 12:26:03,400 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1641, in full_dispatch_request
2017-03-03 12:26:03,400 :    rv = self.handle_user_exception(e)
2017-03-03 12:26:03,400 :
2017-03-03 12:26:03,400 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1544, in handle_user_exception
2017-03-03 12:26:03,400 :    reraise(exc_type, exc_value, tb)
2017-03-03 12:26:03,400 :
2017-03-03 12:26:03,400 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1639, in full_dispatch_request
2017-03-03 12:26:03,400 :    rv = self.dispatch_request()
2017-03-03 12:26:03,400 :
2017-03-03 12:26:03,400 :  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1625, in dispatch_request
2017-03-03 12:26:03,400 :    return self.view_functions[rule.endpoint](**req.view_args)
2017-03-03 12:26:03,400 :
2017-03-03 12:26:03,401 :  File "/home/SIIL/mysite/flask_app.py", line 64, in transactions
2017-03-03 12:26:03,401 :    sale = transactions1(content=request.form["Item"])

Tags: inpyselfappflaskdbrequestlib
1条回答
网友
1楼 · 发布于 2024-10-06 10:20:47

您可以通过tablename调用模型。在

你的代码应该是这样的。。而不是transactions1

@app.route('/transactions', methods=['GET', 'POST'])
def transactions():
    if request.method == 'GET':
        return render_template('Transactions.html')
    sale = Transactions1(Item=request.form["Item"],Shack=request.form["Shack"],Paym_Reference=request.form["Paym_Reference"],Amount=request.form["Amount"])
    db.session.add(sale)
    db.session.commit()
    return render_template('Transactions.html')

相关问题 更多 >