2016-02-03 3 views
1

У меня есть регистрационную форму, как это:Python Колба Вставка данных в MySQL

<form action="{{url_for('app.register')}}" method="post"> 
      <input type="text" placeholder="First Name" name="fname" required/><br><br> 
      <input type="text" placeholder="Last Name" name="lname" required/><br><br> 
      <input type="text" placeholder="username" name="user" required/><br> 
      <input type="password" placeholder="password" name="password" required/><br> 
      <input type="password" placeholder="confirm password" name="cpassword" required/><br><br> 
      <input type="text" placeholder="Email" name="email" required/><br><br> 
      <select id="soflow" name="selection" required > 
    <option value = "Default">Select a Security Question</option> 
    <option value = "What is your first school">What is your first school?</option> 
    <option value = "What is the name of your first pet">What is the name of your first pet?</option> 
    <option value = "What is your first car">What is your first car?</option> 
</select><br><br> 
    <input type="text" placeholder="Security Answer" name="answer" required/><br> 
      <input type="submit" value="Sign Up"> 

    </form> 

И мой питон код для извлечения и вставки данных в базу данных, как это:

db = MySQLdb.connect(host="localhost", user="root", passwd="", db="osn") 
cur = db.cursor() 
@blueprint.route('/register/', methods=['GET', 'POST']) 
def register(): 
    adduser() 
    return render_template('reg.html') 

@blueprint.route('/adduser/', methods=['GET', 'POST']) 

def adduser(): 
    print("Entered") 

    try: 
     fname = request.form['fname'] 
     lname = request.form['lname'] 
     password = request.form['password'] 
     username = request.form['user'] 
     cpassword = request.form['cpassword'] 
     email = request.form['email'] 
     selection = request.form['selection'] 
     answer = request.form['answer'] 
     print fname,lname,password,username,cpassword,email,selection,answer 
     cur.execute("INSERT INTO 'login'('fname','lname','username','password','email','question','answer') VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",(fname,lname,username,password,cpassword,email,selection,answer))   
     print "Registered" 
    except Exception as e: 
     return(str(e)) 

Проблема здесь это выполняет до инструкции print выше инструкции insert, она не показывает никакой ошибки, но данные не вставляются. Где я ошибся. Пожалуйста, подумайте, что Im new to Flask. Заранее спасибо :)

+0

Выполняется ли заявка' print 'Registered' '? – hjpotter92

+0

Нет, это проблема. Может быть, есть ошибка в insert..So его пропуская остальную часть кода –

ответ

1

Глядя на запрос, я заметил, что:

INSERT INTO 
    'login'('fname', 
      'lname', 
      'username', 
      'password', 
      'email', 
      'question', 
      'answer') 
VALUES (%s, 
     %s, 
     %s, 
     %s, 
     %s, 
     %s, 
     %s, 
     %s) 

Вы помещаете имя-таблицы, а также имя столбца в виде строк (цит с одной-апостроф). Вместо этого они должны либо появляться с закрытием, либо должны быть заключены внутри backticks: (`).

С помощью библиотеки Python MySQL, вы должны зафиксировать изменения с курсором:

cur.execute(
    """INSERT INTO 
     login (
      fname, 
      lname, 
      username, 
      password, 
      email, 
      question, 
      answer) 
    VALUES (%s,%s,%s,%s,%s,%s,%s,%s)""", (fname, lname, username, password, cpassword, email, selection, answer)) 
db.commit() 
    print "Registered" 

Кроме того, вы определили 7 столбцов для вставки данных в, в то время как вы передаете 8 значений.

+0

Пробовал без кавычек, но результата нет –

+0

@NavyaVaishnavi Обновлен ответ выше. – hjpotter92

+0

Не должно быть connection.commit() не cur.commit()? –

1

Ваш insert сделан, но вы не используете commit свои данные в базу данных. Поэтому после окончания сеанса он откат.

В зависимости от стратегии изоляции транзакций MySQL она никогда не может стать видимой для других программ или транзакций.

1

следующий синтаксис работал: «INSERT INTO login (u_id, fname, lname, username, password, email, question, answer) VALUES ('',% s,% s,% s,% s,% S ,% s,% s) "

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