繁体   English   中英

从变量插入 sqlite3

[英]Insert sqlite3 from variables

我一直在尝试创建一个数据库,我的表的列名将来自一个列表:

import sqlite3
L     = ["Nom","Age","Taille"]
list2 = ["Karl", "11", "185"]
M = []
R = 0
con = 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))

检查文档: https : //docs.python.org/3.8/library/sqlite3.html

在你的情况下:

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 - 稍后会变得非常混乱。 Llist2类的名称也无济于事。 在命名变量时要清楚,根据它们的含义或包含的内容命名。 未来你会感谢你。

也许更干净一点:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM