2015-05-27 3 views
0

Я пытаюсь связать html-форму с python и sql. Мое требование состоит в том, что пользователь вводит ввод и этот ввод должен быть отправлен на некоторый функциональный блок python для выполнения инструкции sql на MS SQL Server и возвращает результаты обратно пользователю. Пожалуйста, помогите в связывании код ниже: order.htmlСсылка html, python и sql

<html> 
<form action="/order" method="POST"> 
<input type="text" name="month"> 
<input type="number" name="weekno"> 
<input type="submit"> 
</form> 
The stock for {{weekno}} is xyz 
</html> 

order.py:

from flask import Flask,render_template 
import sys 

app = Flask(__name__) 

@app.route('/order', method=['POST']) 
def orderdb() : 
    # using sql server connection statement here 
    cursor = connection.cursor() 
    cursor.execute ("select month,stock from salesdb where weeknumbr=?",weekno) 
    return render_template('order.html',weekno = weekno) 

Это пример кода, я использую здесь вместо вставки полного кода.

Пожалуйста, предложите использовать синтаксис, чтобы запрос должен принимать значение weekno из формы и выполнять запрос на основе условия weeknumbr.

Спасибо!

ответ

0

Чтобы получить значение из формы, в вашем случае, вы должны сделать это:

from Flask import request 

... 

weekno = int(request.form['weekno']) 

Я предлагаю вам прочитать эту Flask Quickstart

0
from flask import request 
from flask.ext.mysqldb import MySQL 

mysql = MySQL(app) 
... 

month, weekno = request.form['month'], request.form['weekno'] 
cursor = connection.cursor() 
cursor.execute ("select month,stock from salesdb where weeknumbr=?",weekno) 

cursor.execute() возвратит число строк изменен или извлекаться , как и в PHP.

При выполнении запроса SELECT каждая строка представлена ​​в Python массивом. Для приведенного выше запроса SELECT, с колоннами «name» и «phone_number», вы в конечном итоге с чем-то вроде:

['Bob', '9123 4567'] 

cursor.fetchall() вернет вам массив, содержащий каждую строку в результатах запроса. То есть вы получаете массив массивов. Таким образом, выше SELECT запрос может дать вам:

[['Bob', '9123 4567'], ['Janet', '8888 8888']] 

Проще всего сделать с этим, чтобы перебирать что-то вроде:

data = cursor.fetchall() 
for row in data : 
    do stuff 

Вы также можете использовать cursor.fetchone(), если вы хотите, чтобы получить одну строку в время. Это удобно, когда вы делаете запросы типа «SELECT COUNT(*) ...», которые возвращают только одну строку.

для простого примера использовать флягу-MySQL вы можете прочитать их:

http://ianhowson.com/a-quick-guide-to-using-mysql-in-python.html

или вы можете прочитать это для справки http://dev.mysql.com/doc/connector-python/en/connector-python-reference.html

+0

Привет! Спасибо за подробное объяснение. Я попробовал это, но получив следующую ошибку: Плохой запрос Браузер (или прокси) отправил запрос, который этот сервер не мог понять. –

+0

первый запрос на импорт 'из флажка import Flask, render_template, request'and modify' @ app.route ('/ order', method = ['POST']) 'with'@app.route ('/ order', methods = ['GET', 'POST']) 'then add 'if request.method ==' POST ': или' if request.method == 'GET': 'для получения подробной информации см. Эту ссылку [http: /paste.ubuntu.com/11455046/) @ шаши-кант –

Смежные вопросы