sqlite python是否已经存在?
您好,我是python和sql新手,我有一个问题:如何检查记录是否已经存在sqlite python是否已经存在?,python,sql,Python,Sql,您好,我是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 TABL
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应该在第一次els后删除,您每次只做一条记录。您可以通过use语句检查随机值的存在。您还可以使用insert操作分离init。下面的代码是一个演示,可以实现在db中插入n个非重复值
import random
import sqlite3
def init():
db = sqlite3.connect('Filmdatabase.db')
db.execute('DROP TABLE IF EXISTS randomcode')
db.execute('CREATE TABLE randomcode(code INT, name TEXT)')
def insert_random():
db = sqlite3.connect('Filmdatabase.db')
while True:
randomcode = random.randint(100000, 999999)
###Attention the EXISTS statement
cursor = db.execute('SELECT EXISTS(SELECT * FROM randomcode where code=?)', (randomcode,))
if cursor.fetchone()[0] == 0:
break
db.execute('INSERT INTO randomcode (code, name) VALUES (?, ?)', (randomcode, 'Jay'))
db.commit()
def check():
db = sqlite3.connect('Filmdatabase.db')
cursor = db.execute('SELECT * FROM randomcode')
for i in cursor:
print(i)
init()
for i in range(0, 10): #insert as many as you want.
insert_random()
check()
您可以通过use语句检查随机值的存在性。您还可以使用insert操作分离init。下面的代码是一个演示,可以实现在db中插入n个非重复值
import random
import sqlite3
def init():
db = sqlite3.connect('Filmdatabase.db')
db.execute('DROP TABLE IF EXISTS randomcode')
db.execute('CREATE TABLE randomcode(code INT, name TEXT)')
def insert_random():
db = sqlite3.connect('Filmdatabase.db')
while True:
randomcode = random.randint(100000, 999999)
###Attention the EXISTS statement
cursor = db.execute('SELECT EXISTS(SELECT * FROM randomcode where code=?)', (randomcode,))
if cursor.fetchone()[0] == 0:
break
db.execute('INSERT INTO randomcode (code, name) VALUES (?, ?)', (randomcode, 'Jay'))
db.commit()
def check():
db = sqlite3.connect('Filmdatabase.db')
cursor = db.execute('SELECT * FROM randomcode')
for i in cursor:
print(i)
init()
for i in range(0, 10): #insert as many as you want.
insert_random()
check()
如果您想要
code
的真正随机值,我将使用uuid
模块<代码>导入uuid;打印uuid.uuid5(uuid.NAMESPACE\u DNS,'random.org')。获取\u hex()。这个数字如此之大,以至于截至2015年10月,还没有已知的碰撞()
但是假设你仍然想毫无疑问地知道
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
如果您想要code
的真正随机值,我会使用uuid
模块<代码>导入uuid;打印uuid.uuid5(uuid.NAMESPACE\u DNS,'random.org')。获取\u hex()。这个数字如此之大,以至于截至2015年10月,还没有已知的碰撞()
但是假设你仍然想毫无疑问地知道
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