将来自表单的python数据装入sqlite3

时间:2019-01-10 20:40:45

标签: python sql database sqlite bottle

我想将数据从表单移至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表单中时,无论我放置在此html表单中的内容如何,​​我总是具有“ False ”。是什么原因呢?

我认为我没有违反对数据库施加的任何约束。

数据库中的一行显示如下: enter image description here

编辑:将默认值更改为:forms.get('name', default="Missing 'name' in forms.")后,我看不到正在传递任何值,但问题是为什么会发生?

EDIT2 :我也有登录页面以及以下代码,该部分可以毫不犹豫地工作:

@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')

有什么想法吗?答案?

0 个答案:

没有答案
相关问题