Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlite3在插入后自动插入日期和小时_Python_Sqlite - Fatal编程技术网

Python sqlite3在插入后自动插入日期和小时

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.

我有一个表,其中包含一些列,ID(IntPK)、Name(Text)、Quantity(Int)、Total(Int)、Hour(Int)、Date(Int)

我只需要插入一个名称、一个数量和一个总数,然后每当在这个表中插入一个字段时,我希望它自动用计算机的小时和日期来填充小时和日期。。有办法吗?我不希望每次插入新字段时都必须键入日期和小时

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正确转义传递的值。。。