gpt4 book ai didi

python - 根据上一列中的用户输入/内容在数据库中创建新列

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:54 25 4
gpt4 key购买 nike

我正在创建一个数据库,它接受用户输入并将其存储在数据库中。但是,我希望数据库(db)中的每一行对于每个用户都是唯一的,并且包含单独的输入(即用户输入的输入)

这是我到目前为止的代码:

 user_id = random_number_genned_here
keyword = input_from_user
sqlite_file = 'keywords.sqlite'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS keyword(userid TEXT UNIQUE, keyword TEXT)""")
try:
c.execute("""INSERT INTO keyword (userid , keyword) VALUES (?, ?, )""", (user_id,ukeyword))
except:
#where I need help

所以基本上我需要做两件事。

第一件事:我需要查看用户 ID 是否已在数据库中。 try and except 就是这样做的。如果它不在数据库中,那么我需要在数据库中为该用户 ID 创建一行,并将关键字添加到关键字列中。如果用户 ID 已存在于数据库中,那么我需要将关键字添加到该列中。

第二件事:如果关键字列中有一些文本,那么我需要列来存储新关键字。

我有一些零碎的东西,但我不知道如何将它们组合在一起。

最佳答案

要向表中添加列,您可以使用 ALTER TABLE SQL

ALTER TABLE keyword ADD COLUMN your_column_definition

SQL As Understood By SQLite ALTER TABLE

您必须以编程方式生成 SQL。

不过,看看关键字表的设计会更简单。当每个用户 ID 存储多个数据项时,为什么要将用户 ID 设置为 UNIQUE?我建议,如果您要具有复合唯一性,即使用户 ID 和关键字组合为唯一,那么事情就会简化。

例如也许使用:-

CREATE TABLE IF NOT EXISTS keyword(userid TEXT, keyword TEXT, UNIQUE(userid,keyword));

也许可以考虑以下演示:-

DROP TABLE IF EXISTS keyword;
CREATE TABLE IF NOT EXISTS keyword(userid TEXT, keyword TEXT, UNIQUE(userid,keyword));
INSERT OR IGNORE INTO keyword VALUES
('User001','TEST'),('User001','NOT A TEST'),('User001','KEYWORD A'),('User001','TEST'),
('User002','TEST'),('User002','KEYWORD A'),('User002','KEYWORD B')
;
-- Ooops (not really as duplicates just get ignored)
INSERT OR IGNORE INTO keyword VALUES
('User001','TEST'),('User001','NOT A TEST'),('User001','KEYWORD A'),('User001','TEST'),
('User002','TEST'),('User002','KEYWORD A'),('User002','KEYWORD B')
;
SELECT * FROM keyword;
SELECT * FROM keyword WHERE userid = 'User001';

运行时消息日志显示:-

DROP TABLE IF EXISTS keyword
> OK
> Time: 0.439s


CREATE TABLE IF NOT EXISTS keyword(userid TEXT, keyword TEXT, UNIQUE(userid,keyword))
> OK
> Time: 0.108s


INSERT OR IGNORE INTO keyword VALUES
('User001','TEST'),('User001','NOT A TEST'),('User001','KEYWORD A'),('User001','TEST'),
('User002','TEST'),('User002','KEYWORD A'),('User002','KEYWORD B')
> Affected rows: 6
> Time: 0.095s


-- Ooops (not really as duplicates just get ignored)
INSERT OR IGNORE INTO keyword VALUES
('User001','TEST'),('User001','NOT A TEST'),('User001','KEYWORD A'),('User001','TEST'),
('User002','TEST'),('User002','KEYWORD A'),('User002','KEYWORD B')
> Affected rows: 0
> Time: 0s


SELECT * FROM keyword
> OK
> Time: 0s


SELECT * FROM keyword WHERE userid = 'User001'
> OK
> Time: 0s
  • 请注意,第二次插入插入了 0 行,因为它们都是重复的

查询产生:-

enter image description here

enter image description here

关于python - 根据上一列中的用户输入/内容在数据库中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465833/

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