gpt4 book ai didi

python - sqlite python 如果已经存在?

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:07 24 4
gpt4 key购买 nike

你好,我是 python 和 sql 的新手,我有一个问题,如何检查记录是否已经存在?

import random
import sqlite3

randomcode = random.randint(100000, 999999)

def datebase():
db = sqlite3.connect('Filmdatabase.db')
db.execute('DROP TABLE IF EXISTS randomcode')
db.execute('CREATE TABLE randomcode(code INT, name TEXT)')
db.execute('INSERT INTO randomcode (code, name) VALUES (?, ?)', (randomcode, 'Jay'))
db.commit()
cursor = db.execute('SELECT * FROM randomcode ')
for row in cursor:
print(row)
datebase()

他创建了一个随机值,但如果随机值已经存在,他需要再次运行它。怎么办?

我知道应该在第一次之后删除 drop if exist 和 create table 否则你每次只会创建 1 条记录。

最佳答案

如果你想要一个真正随机的code值,我会使用uuid模块。 导入uuid;打印 uuid.uuid5(uuid.NAMESPACE_DNS, 'random.org').get_hex()。这个数字是如此之大,以至于截至 2015 年 10 月还没有已知的碰撞 (https://en.wikipedia.org/wiki/SHA-1)。

但是假设您仍然想毫无疑问地知道。

import random
import sqlite3

def randomcode():
return random.randint(1,3)

def datebase():
db = sqlite3.connect('Filmdatabase.db')
db.execute('DROP TABLE IF EXISTS randomcode')
db.execute('CREATE TABLE randomcode(code INT, name TEXT)')

create_user(db, 'Jay')
create_user(db, 'Joe')
create_user(db, 'Bob')

cursor = db.execute('SELECT * FROM randomcode ')
for row in cursor:
print(row)

def create_user(db, user):
while True:
code = randomcode()
if db.execute('SELECT count(code) FROM randomcode where code = ?', (code,)).fetchone()[0] == 0:
break

db.execute('INSERT INTO randomcode (code, name) VALUES (?, ?)', (code, user))
db.commit()
datebase()

我强烈建议您不要使用 randint() 并使用 uuid

关于python - sqlite python 如果已经存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33148188/

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