Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite python是否已经存在?_Python_Sql - Fatal编程技术网

sqlite python是否已经存在?

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

您好,我是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应该在第一次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