如何使用Python将datetime插入sqlite3数据库?

时间:2019-07-13 08:25:00

标签: python python-3.x sqlite datetime

我想使用Python将日期时间插入sqlite。

我尝试使用Python的datetime和strftime,但没有用。

测试的时间字段具有数字(日期时间)类型。

from datetime import datetime as dt

rows = db.execute('INSERT INTO test (time) VALUES (:time)', time=dt.now().strftime('%Y-%m-%d %H:%M:%S'))

RuntimeError:(sqlite3.OperationalError)在“'2019-05-19 17:14:25'”附近:语法错误 [SQL:INSERT INTO测试(时间)值('2019-05-19 17:14:25')]

1 个答案:

答案 0 :(得分:0)

您可以使用:-

rows = db.execute("INSERT INTO test (time) VALUES (datetime('now'))")

列类型基本上无关紧要,因为在SQLite中,您可以将任何类型的值存储在任何类型的列中。

除了特殊的 rowid 列或 rowid 列的别名(如果该列是使用INTEGER PRIMARY KEY定义的,是rowid列的别名(或带有AUTOINCREMENT关键字)。 rowid列的别名必须是最大为64位带符号的整数。

工作示例

import sqlite3
drop_sql = "DROP TABLE IF EXISTS test"
crt_sql = "CREATE TABLE IF NOT EXISTS test (time NUMERIC, time2 TEXT, time3 BLOB, time4 REAL, time5 INTEGER )"
db = sqlite3.connect("test.db")
rows = db.execute(drop_sql)
rows = db.execute(crt_sql)
rows = db.execute("INSERT INTO test VALUES(datetime('now'),datetime('now'),datetime('now'),datetime('now'),datetime('now'))")
cursor = db.cursor()
cursor.execute("SELECT * FROM test")
for row in cursor:
    print("Time is " + row[0], "\nTime2 is " + row[1],"\nTime3 is " + row[2], "\nTime4 is " + row[3],"\nTime5 is " + row[4])
db.commit()
db.close()

结果:-

Time is 2019-07-13 08:59:28 
Time2 is 2019-07-13 08:59:28 
Time3 is 2019-07-13 08:59:28 
Time4 is 2019-07-13 08:59:28 
Time5 is 2019-07-13 08:59:28