下面无法将当前时间添加到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"))
2条答案
按热度按时间egmofgnx1#
您不是在添加
dt
变量,而是在添加“dt”string。您的代码中还有另外两个问题:您导入了
QSqlDatabase
,但使用的是QtSql.QSqlDatabase
,并且您要将值添加到test
表中,而您创建的表是test4
。考虑到上面的代码将使用datetime对象的自然字符串表示:
这需要在变量两边加上引号,否则日期和时间之间的空格将被解释为文本查询 space(用于分隔命令),从而导致错误。您甚至可以使用
isoformat()
来实现更标准化的表示,从而允许使用fromisoformat()
进一步重新转换为datetime对象。9vw9lbht2#
我打赌一个更简单的解决方案是在创建表sql查询中设置一个默认值。从Sqlite v3.1.0开始,你现在可以添加current_timestamp。这将保存你在插入任何表时不必要的导入。
如enter link description here所示