使用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',dt"))

解决方法

您不是要添加dt变量,而是要添加“ dt” 字符串

您的代码中还存在另外两个问题:您导入了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 INTO test4 VALUES('abc@wdc.com','abc1','{}'".format(dt))

考虑上述内容将使用datetime对象的自然字符串表示形式:

2020-11-12 14:32:13.471729

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...