Как сохранить значения из раскрывающегося списка HTML в MySQL DB во Flask - PullRequest
0 голосов
/ 13 мая 2018

Привет! Я использую следующий код для сохранения значений, введенных на html-странице ниже, в БД MySQL. Добавлен выпадающий список «RequestType», но при выборе значений из «RequestType» и нажатии кнопки «Отправить» возникает ошибка, описанная ниже. Размещены коды, используемые во Flask и HTML. Обратитесь за помощью к решению этой проблемы.

TypeError: execute () принимает от 2 до 3 позиционных аргументов, но было дано 5

Основная html-страница с тремя значениями, то есть именем, адресом электронной почты и типом запроса

Код, используемый во Flask, выглядит следующим образом

from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL


app = Flask(__name__)

# Configure db
#db = yaml.load(open('db.yaml'))
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
#app.config['MYSQL_PASSWORD'] = 'P@$$w0rd'
app.config['MYSQL_DB'] = 'flaskapp'




mysql = MySQL(app)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        # Fetch form data
        userDetails = request.form
        name = userDetails['name']
        email = userDetails['email']
        requesttype = userDetails.get('requesttype')
        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO users(name, email, requesttype) VALUES(%s, %s, [])", name, email, requesttype)
        mysql.connection.commit()
        cur.close()
        return 'Save is Successful'
    return render_template('index.html')

HTML-код приведен ниже.

 <form method="POST" action="{{ url_for('index') }}">

    Name <input type="text" name="name" />
      <br>

    Email <input type="email" name="email" />
      <br> 
    RequestType <select id="RequestType" name = "RequestType" >
     <option selected value="1">New</option>
     <option value="0">Old</option>
    </select><br>  
    <input type="Submit">
    </form>

1 Ответ

0 голосов
/ 20 мая 2018

Следующее должно работать

def index():
    if request.method == 'POST':
        # Fetch form data
        userDetails = request.form
        name = userDetails['name']
        email = userDetails['email']
        requesttype = userDetails['RequestType']
        cur = mysql.connection.cursor()
        cur.execute("""INSERT INTO users (name, email, requesttype) VALUES (%s, %s, %s)""", (name, email, requesttype))
        mysql.connection.commit()
        cur.close()
        return 'Save is Successful'
     return render_template('index.html')

Тройная кавычка предотвратит любую синтаксическую ошибку в MySQL. Также обратите внимание на добавленную скобку на (name, email, requesttype).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...