为了账号安全,请及时绑定邮箱和手机立即绑定

从变量插入 sqlite3

从变量插入 sqlite3

www说 2023-10-25 10:59:21
我一直在尝试创建一个数据库,我的表的列名来自一个列表:import sqlite3L     = ["Nom","Age","Taille"]list2 = ["Karl", "11", "185"]M = []R = 0con = sqlite3.connect(":memory:")con.execute("CREATE TABLE master ("+",".join(L)+")")然后要么:for e in L:    R += 1    con.execute("INSERT INTO master("+",".join(L)+") VALUES (?,?,?)",list2[R-1])或者for e in L:    R += 1    con.execute("INSERT INTO master(e) VALUES (?)",list2[R-1])或者listX=[list2[0],list2[1],list2[3])con.executemany("INSERT INTO master ("+",".join(L)+") VALUES ("+",".join(M)+")", (listX))
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

在你的情况下:

import sqlite3


con = sqlite3.connect(":memory:")

columns = ["Nom", "Age", "Taille"]

columns_str = '"' + '","'.join(columns) + '"'

con.execute(f"CREATE TABLE people ({columns_str})")


data = [

  ('Karl', 11, 185)

]

stmt = f"INSERT INTO people ({columns_str}) VALUES (?, ?, ?)"

con.executemany(stmt, data)

另外,可能不要打电话给你的桌子master——稍后会变得非常混乱。L像和 之类的名字list2也没有帮助。明确命名变量,按照它们的含义或包含的内容命名。未来的你会感谢你的。


也许更干净一点:


import sqlite3


con = sqlite3.connect(":memory:")

columns = ("Nom", "Age", "Taille")

con.execute("CREATE TABLE people (%s, %s, %s)" % columns)


data = [

  ('Karl', 11, 185)

]

stmt = f"INSERT INTO people (%s, %s, %s) VALUES (?, ?, ?)" % columns

con.executemany(stmt, data)


查看完整回答
反对 回复 2023-10-25
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信