2017-03-03 7 views
-1

PythonanywhereでFlask/Python/SQLAlchemyを使用して、HTMLフォームからMySQLテーブルにデータを書き込もうとしています。Flask SQLAlchemy/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:: 'Transactions.html':

{% extends "template3.html" %} 
{% block content %} 
<h1>Enter a Transaction</h1> 

<form action="", method="POST"> 
    <dl> 
     <dt>Sale Item: 
     <dd><input type=text name="Item" required/> 
     <dt>Shack: 
     <dd><input type=text name="Shack" required/> 
     <dt>Reference: 
     <dd><input type=text name="Paym_Reference" required/> 
     <dt>Amount: 
     <dd><input type=text name="Amount" required/> 
    </dl) 
    <br> 


<p><input type=submit value=Enter> 
    </form> 

{% endblock %} 

コード...

MySQLのMySQLのテーブルには、セットアップが、私は/取引にデータを入力することができますが、それはクラッシュ:

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"]) 
+0

'transactions1'または' Transactions1'これが好きでしょうか? – itzMEonTV

+0

以下のコメントを参照していただきありがとうございます。 – wazzahenry

答えて

3

モデル番号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') 
+0

ありがとう!ただ1つの修正は、 'Transactions'ではなく、' Transactions1'でなければなりません。 – wazzahenry

関連する問題