使用 python 更新 SQLite 中的日期时间

UPDATE datetime in SQLite with python

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

该列现在是 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 sqlite3 api doc

You shouldn’t assemble your query using Python’s string operations because doing so is insecure; it makes your program vulnerable to an SQL injection attack

使用 placeholders 的另一个很好的论据是这个例子。如果第二个 sql 写成 而没有 format,它看起来像这样:

UPDATE alarm SET raiseDateTime = "2020-09-28 11:10:45"。但是 format 正在“消耗”引号 ("),因此更新查询 认为 它有一个数字(毕竟 2020-09-28 计算为一个数字) 之后 sql 语法分崩离析。可以通过在适当的位置添加适当的引号来“固定”查询。相反,我建议使用占位符,因为这是一种推荐的风格和一个很好的习惯。