gpt4 book ai didi

python - 将带有索引的行添加到 sqlite 中的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 05:50:22 26 4
gpt4 key购买 nike

我通过以下查询创建了一个表:

with sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn:
cur = conn.cursor()
cur.execute("CREATE TABLE Surveys(Id INTEGER PRIMARY KEY, Name TEXT, Desc TEXT, DictObject BLOB, Hash TEXT)")
conn.commit()

现在我必须为每个请求向 Surveys 表添加一些 Survey 数据。 Surveys 表将 Id 作为主要整数值。每次插入时都必须增加 - 正确的方法是什么?我是否必须获取每一行并检查每个请求的最后一个Id是什么?

最佳答案

sqliteautomatically provide an id for a INTEGER PRIMARY KEY column如果您自己不提供值,则在表上插入。只需为除 id 列之外的每一列插入数据即可。

with sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn:
cur = conn.cursor()
cur.execute("INSERT INTO Surveys(Name, Desc, DictObject, Hash) VALUES (?, ?, ?, ?",
('somename', 'some description\nof sorts\n',
"{'dump': 'of a dictionary'}", '0xhash'))

您可能需要将关键字 AUTOINCRMENT 添加到您的 id 列中;默认是选择现有的最高行 id 加 1,如果定期从表中删除数据,可能会导致 id 重用(删除当前最高 id ,下次会重新使用) 。 AUTOINCRMENT 保证每个生成的数字只会在表中使用一次,与删除无关。

请注意,当您使用a sqlite3 connection as a context manager时(使用 with 语句),commit() 会自动为您应用。引用文档:

Connection objects can be used as context managers that automatically commit or rollback transactions. In the event of an exception, the transaction is rolled back; otherwise, the transaction is committed.

换句话说,您可以安全地删除代码中的conn.commit()行,它完全是多余的。

关于python - 将带有索引的行添加到 sqlite 中的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com