【问题标题】:SQLite3 with Flask Insert only allowing 1 character带有 Flask Insert 的 SQLite3 仅允许 1 个字符
【发布时间】:2021-03-31 11:34:40
【问题描述】:

我正在使用 Flask 并尝试将名称(文本)插入 SQLite3 DB。数据库有一张表(客人)和一列(名称)。但是,它在插入过程中只接受 1 个字符;任何事情都失败了。

如果我将“nm”硬编码为一个值,它仍然会失败,所以我认为它不是 Html 模板。我可以使用“数据库浏览器”应用程序手动向数据库添加一个不同长度的值,所以我真的很茫然。这是一个代码 sn-p。

    @app.route('/addrec', methods=['POST', 'GET'])
    def addrec():
        msg = "msg"
        if request.method == 'POST':
            try:
                nm = request.form['nm']
    
                with sqlite3.connect("database.db") as con:
                    cur = con.cursor()
                    cur.execute('''Insert into guests values (?)''', nm)
                    con.commit()
                    msg = "Record successfully added"

【问题讨论】:

  • 为客人显示表定义。从 SQLite3 REPL,.schema guests 将打印它。

标签: sqlite flask


【解决方案1】:

cur.execute 的第二个参数应该是一个元组:

cur.execute('''Insert into guests values (?)''', (nm,))

为什么?例如,如果您将该参数称为 arg,那么 arg[0] 就是您需要的字符串值 (nm):该元组中的第一项。

否则(当传递nm 而不是元组时)它将读取nm[0],这是字符串nm 的第一个字符。

【讨论】:

  • 这就是答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
相关资源
最近更新 更多