是否使用QSqlQuery将当前时间添加到表中



下面无法将当前时间添加到test4表的dateTime中,如何修改?

query.exec_("INSERT INTO test values('abc@wdc.com','abc1',dt"))
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from datetime import datetime
database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('test1.db')
database.open()
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS test4(id varchar(50) PRIMARY KEY,password varchar(50),dateTime timestamp)")
dt=datetime.now()
query.exec_("INSERT INTO test VALUES('abc@wdc.com','abc1',dt"))

我打赌一个更简单的解决方案是在创建表sql查询中设置默认值。从Sqlite v3.1.0起,您现在可以添加current_timestamp。这将为您在插入任何表时省去不必要的导入麻烦。

CREATE TABLE IF NOT EXISTS test4(
id varchar(50) PRIMARY KEY,
password varchar(50),
dateTime timestamp not null default current_timestamp
)

如图所示,在此处输入链接描述

您不是在添加dt变量,而是在添加"dt">string

代码中还有另外两个问题:您导入了QSqlDatabase,但使用的是QtSql.QSqlDatabase,并且您将值添加到test表中,而您创建的表是test4

from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from datetime import datetime
database =QSqlDatabase.addDatabase('QSQLITE')
database.setDatabaseName('test1.db')
database.open()
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS test4(id varchar(50) PRIMARY KEY,password varchar(50),dateTime timestamp)")
dt=datetime.now()
query.exec_("INSERT INTOtest4VALUES('abc@wdc.com','abc1','{}'".format(dt))

考虑到上面将使用日期时间对象的自然字符串表示:

2020-11-12 14:32:13.471729

这需要在变量周围加引号,否则日期和时间之间的空格将被解释为文字查询空格(用于分隔命令(,从而导致错误。您甚至可以将isoformat()用于更标准化的表示,从而允许使用fromisoformat()进一步转换为日期时间对象。

相关内容

  • 没有找到相关文章

最新更新