缩短 SQLite3 插入语句以提高效率和可读性
Shorten SQLite3 insert statement for efficiency and readability
从这个answer:
cursor.execute("INSERT INTO booking_meeting (room_name,from_date,to_date,no_seat,projector,video,created_date,location_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (rname, from_date, to_date, seat, projector, video, now, location_name ))
我想将其缩短为:
simple_insert(booking_meeting, rname, from_date, to_date, seat, projector, video, now, location_name)
第一个参数是 table 名称,可以读取该名称以获取列名列表以格式化 SQLite3 语句的第一部分:
cursor.execute("INSERT INTO booking_meeting (room_name,from_date,to_date,no_seat,projector,video,created_date,location_name)
然后是值子句(插入语句的第二部分):
VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
可以通过统计table中列名的个数来格式化。
我希望我正确地解释了这个问题,您会欣赏这种功能所节省的时间。 python这个函数怎么写? ...是我的问题。
SQLite3 中可能已经有一个 simple_insert()
函数,但我还没有偶然发现它。
如果要插入所有列,则不需要在 INSERT
查询中指定列名。对于这种情况,您可以编写如下函数:
def simple_insert(cursor, table, *args):
query = f'INSERT INTO {table} VALUES (' + '?, ' * (len(args)-1) + '?)'
cursor.execute(query, args)
对于您的示例,您可以将其命名为:
simple_insert(cursor, 'booking_meeting', rname, from_date, to_date, seat, projector, video, now, location_name)
请注意,我已选择将 cursor
传递给该函数,您可以选择只依赖它作为全局变量。
从这个answer:
cursor.execute("INSERT INTO booking_meeting (room_name,from_date,to_date,no_seat,projector,video,created_date,location_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (rname, from_date, to_date, seat, projector, video, now, location_name ))
我想将其缩短为:
simple_insert(booking_meeting, rname, from_date, to_date, seat, projector, video, now, location_name)
第一个参数是 table 名称,可以读取该名称以获取列名列表以格式化 SQLite3 语句的第一部分:
cursor.execute("INSERT INTO booking_meeting (room_name,from_date,to_date,no_seat,projector,video,created_date,location_name)
然后是值子句(插入语句的第二部分):
VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
可以通过统计table中列名的个数来格式化。
我希望我正确地解释了这个问题,您会欣赏这种功能所节省的时间。 python这个函数怎么写? ...是我的问题。
SQLite3 中可能已经有一个 simple_insert()
函数,但我还没有偶然发现它。
如果要插入所有列,则不需要在 INSERT
查询中指定列名。对于这种情况,您可以编写如下函数:
def simple_insert(cursor, table, *args):
query = f'INSERT INTO {table} VALUES (' + '?, ' * (len(args)-1) + '?)'
cursor.execute(query, args)
对于您的示例,您可以将其命名为:
simple_insert(cursor, 'booking_meeting', rname, from_date, to_date, seat, projector, video, now, location_name)
请注意,我已选择将 cursor
传递给该函数,您可以选择只依赖它作为全局变量。