Python sqlite3在插入后自动插入日期和小时
我有一个表,其中包含一些列,ID(IntPK)、Name(Text)、Quantity(Int)、Total(Int)、Hour(Int)、Date(Int) 我只需要插入一个名称、一个数量和一个总数,然后每当在这个表中插入一个字段时,我希望它自动用计算机的小时和日期来填充小时和日期。。有办法吗?我不希望每次插入新字段时都必须键入日期和小时Python sqlite3在插入后自动插入日期和小时,python,sqlite,Python,Sqlite,我有一个表,其中包含一些列,ID(IntPK)、Name(Text)、Quantity(Int)、Total(Int)、Hour(Int)、Date(Int) 我只需要插入一个名称、一个数量和一个总数,然后每当在这个表中插入一个字段时,我希望它自动用计算机的小时和日期来填充小时和日期。。有办法吗?我不希望每次插入新字段时都必须键入日期和小时 import sqlite3 conn = sqlite3.connect('Inventario.db') c = conn.cursor() conn.
import sqlite3
conn = sqlite3.connect('Inventario.db')
c = conn.cursor()
conn.commit()
c.execute('''CREATE table if not exists sales(id INTEGER PRIMARY KEY, client TEXT, qty INTEGER, total INTEGER, hour INTEGER, date INTEGER)''')
您可以创建一个使用(例如)
datetime
检测日期的方法
import datetime
def insert_into_table(cursor,client,qty,total):
date = datetime.datetime.now().date() # you can change it to your desired format as well as hour
hour = datetime.datetime.now().hour()
cursor.execute("INSERT INTO sales(client,qty,total,hour,date) VALUES (?,?,?,?,?)", (client,qty,total,hour,date))
在我看来,游标可以是类的一个属性,因此不需要将该属性添加到方法中
编辑:感谢Jon Clements,他帮助我改进了代码,使之更加安全。不要使用字符串交互来构造SQL值查询,sqlite通常使用的占位符是
?
不是%s
实际上,我使用%s,它对我有效。是的。。。它接受多个,但通常使用的是?
。。。我投了否决票,因为你使用的是字符串插值,这很危险,而且会受到SQL注入攻击。谢谢你,我会使用?在将来。但我认为这是一个可能的解决方案,无论我使用的是%s还是?。这不是关键点-cursor。执行(“插入销售(客户、数量、总计、小时、日期)值(“%s”、“s”、“s”、“s”、“s”、“s”)”)“%(客户、数量、总计、小时、日期))
是危险的。。。。它至少应该类似于:cursor.execute(“插入销售(客户机、数量、总计、小时、日期)值(?、、、、?、?)”、(客户机、数量、总计、小时、日期))
,然后允许DB API正确转义传递的值。。。