使用python更新SQLite中的datetime

2024-09-30 01:34:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须使用python在我的SQL列中插入datetimes,但当我尝试以YYYY-MM-DD格式插入字符串时,HH:MM:SS SQLite给了我以下错误-sqlite3.OperationalError:near“11”:语法错误-

该列现在是文本格式(我也尝试了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))

Tags: formatexecutesqldatetimevalue格式updatewhere
1条回答
网友
1楼 · 发布于 2024-09-30 01:34:02

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语法就崩溃了。可以通过在适当的位置添加适当的引号来“修复”查询。相反,我建议使用占位符,因为这是一种推荐的风格,也是一种很好的习惯

相关问题 更多 >

    热门问题