【问题标题】:UPDATE datetime in SQLite with python使用 python 在 SQLite 中更新日期时间
【发布时间】:2020-08-28 11:00:57
【问题描述】:

我必须使用 python 在我的 SQL 列中插入日期时间,但是当我尝试插入格式为 YYYY-MM-DD HH:mm:SS 的字符串时,SQLite 给了我这个错误 -sqlite3.OperationalError: near "11":语法错误 -

该列现在是 TEXT 格式(我也尝试过 DATETIME),但它似乎不接受它,它接受的唯一格式是 YYYY-MM-DD。

这是我的代码:

            for i in range(len(actualValue)):
                attuale = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                c.execute('UPDATE alarm SET valoreAttuale = {} WHERE alarmId = {} '.format(actualValue[value], value + 1))
                c.execute('UPDATE alarm SET raiseDateTime = {} WHERE alarmId = {} '.format("2020-09-28 11:10:45", value + 1))

【问题讨论】:

    标签: python database sqlite datetime python-datetime


    【解决方案1】:

    来自python sqlite3 api doc

    您不应该使用 Python 的字符串操作来组装查询,因为这样做是不安全的;它使您的程序容易受到 SQL 注入攻击

    另一个使用placeholders 的好理由是这个例子。如果第二个 sql 没有 format 编写,它看起来像这样:

    UPDATE alarm SET raiseDateTime = "2020-09-28 11:10:45"。但是format 正在“消耗”引号 ("),因此 UPDATE 查询 认为 它有一个数字(毕竟 2020-09-28 评估为一个数字),之后 sql 语法下降分开。可以通过在适当的位置添加适当的引号来“修复”查询。相反,我建议使用占位符,因为这是推荐的样式和非常好的习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2015-07-04
      相关资源
      最近更新 更多