Бутылка данных питона из формы в sqlite3 - PullRequest
0 голосов
/ 10 января 2019

Я хочу переместить данные из формы в sqlite3:

@app.route('/')
@app.route('/reg/')
@app.route('/reg', methods='POST')
def registration():
    conn = sqlite3.connect('trainsdb2.db')
    c=conn.cursor()
    name = request.forms.get('name', default=False)
    #surname = request.forms.get('surname', default=False)
    #mail = request.forms.get('mail', default=False)
    #adress = request.forms.get('adress', default=False)
    #login_def = request.forms.get('login_defined', default=False)

    #password_def = request.forms.get('password_defined', default=False)
    c.execute('INSERT INTO LoginData (id,login,password) VALUES("%s","%s","%s")'%(random.randint(1,1000),name,'b'))

    conn.commit()
    conn.close()
    return template('index')

Моя таблица sqlite3 была создана следующим образом:

CREATE TABLE LoginData (id int AUTO_INCREMENT NOT NULL, login varchar NOT NULL, password varchar NOT NULL, "loggedin" integer NOT NULL DEFAULT '0', "randStri" varchar, PRIMARY KEY(id))

Моя форма выглядит так:

<form action="/reg" method="post">
<table><tr>
  <td><b>Name: </b></td><td><input name="name" type="text"></td></tr>
  <tr><td><b>Surname: </b></td><td><input name="surname" type="text"></td></tr>
  <tr><td><b>Email: </b></td><td><input name="mail" type="text"></td></tr>
  <tr><td><b>Adress: </b></td><td><input name="adress" type="text"></td></tr>
  <tr><td><b>Login: </b></td><td><input name="login_defined" type="text"></td></tr>
  <tr><td><b>Password: </b></td><td><input name="password_defined" type="password"></td></tr>
  <tr><td><b><input value="Register!" type="submit"></b></td><td></td></tr>
</table>
</form>

Когда я помещаю свои данные в html-форму в поле 'login' в моей базе данных, у меня появляется ' False ', всегда, независимо от того, что я поместил в html-форму. В чем причина?

Я не думаю, что нарушаю какие-либо ограничения, налагаемые на базу данных.

Одна строка из моей базы данных выглядит так: enter image description here

РЕДАКТИРОВАТЬ: После изменения значения по умолчанию на: forms.get('name', default="Missing 'name' in forms.") Я вижу, что значение не передается, однако вопрос в том, почему это происходит?

РЕДАКТИРОВАТЬ 2: У меня также есть страницы входа, код следующий, эта часть работает без каких-либо колебаний:

@app.route('/login')
@app.route('/login/')
@app.route('/login', method='POST')
def login():
    conn = sqlite3.connect('trainsdb2.db')
    c = conn.cursor()
    loginName = request.forms.get('login_name', default=False)
    password = request.forms.get('password', default=False)
    c.execute('SELECT * FROM LoginData WHERE login="%s" AND password="%s"' %(loginName,password))
    if c.fetchone() is not None: 
        response.set_cookie("user", loginName, secret=secretKey)
        log.info = ('not none')
        conn.commit()
        conn.close() 
        redirect('/index')
        return True
    else:
        conn.commit()
        conn.close() 
        return template('login')
    conn.commit()
    conn.close() 
    return template('login')

Есть идеи? Ответы?

...