Python SQlite3未插入行
确切地说,我正在创建一个登录和注册程序,目前我在按用户名和密码输入的给定值插入一行时遇到了一些问题 我有两个python文件,一个是Main.py,第二个是functions.py,这显然是我程序的函数和类 Pycharm不会抛出错误,所以我想问我的代码出了什么问题?为什么不插入一行 Main.py 函数.py 这个类将接受main.py中给定的用户名和密码值 这就是创建表的地方Python SQlite3未插入行,python,sqlite,oop,Python,Sqlite,Oop,确切地说,我正在创建一个登录和注册程序,目前我在按用户名和密码输入的给定值插入一行时遇到了一些问题 我有两个python文件,一个是Main.py,第二个是functions.py,这显然是我程序的函数和类 Pycharm不会抛出错误,所以我想问我的代码出了什么问题?为什么不插入一行 Main.py 函数.py 这个类将接受main.py中给定的用户名和密码值 这就是创建表的地方 c = sqlite3.connect('registration.db') c.execute('''CREAT
c = sqlite3.connect('registration.db')
c.execute('''CREATE TABLE IF NOT EXISTS info (username TEXT NOT NULL, password TEXT NOT NULL);''')
对于使用python的SQLite,您需要创建一个游标 表格创建: 导入sqlite3 conn=sqlite3.connect('registration.db') c=连接光标() c、 执行('CREATE TABLE IF NOT EXISTS info(用户名文本不为空,密码文本不为空)' 康涅狄格州提交 c、 关闭()
main.py
:
username=input(“用户名:”)
密码=输入(“密码:”)
user1=注册(用户名、密码)
user1.signu()
打印(“完成!”)
function.py
:
导入sqlite3
conn=sqlite3.connect('registration.db')
c=连接光标()
注册类别:
定义初始化(self、用户名、密码):
self.username=用户名
self.password=密码
def签名(自我):
c、 执行(f'INSERT INTO info(username,password)值(“self.username}”,“{self.password}”))
康涅狄格州提交
c、 关闭()
您永远不会调用执行
INSERT
查询的方法
您需要创建一个游标来执行查询
c = sqlite3.connect('main.db')
class SignUp:
def __init__(self, username, password):
self.username = username
self.password = password
def signu(self):
cur = c.cursor()
cur.execute(f'''INSERT INTO info (username, password) VALUES (?, ?); ''', (self.username, self.password))
c.commit()
username = input("Username: ")
password = input("Password: ")
s = Signup(username, password)
s.signu()
print("Done!")
从不调用
signu()
不要将变量直接替换到SQL字符串中。在查询中使用占位符,并将参数参数参数设置为cursor.execute()
。while
循环总是中断的目的是什么,在s variable中,我实际上在while循环中添加了一个条件语句,它将检查给定的用户名是否已经在表中,如果已经在表中,那么它将调用continue syntax。如果这是答案,请单击复选标记谢谢,它可以工作。我只是忘了创建一个游标。问题不是他忘了调用这个方法(他在main.py中调用它)。问题是他没有创建游标。也不要在signu中创建游标(如果多次调用signu,将创建多个游标),他在main.py
中在哪里调用它?我只看到s(用户名、密码)
好的一点:),仍然可以很好地谈论光标(不仅仅是添加行)
c = sqlite3.connect('registration.db')
c.execute('''CREATE TABLE IF NOT EXISTS info (username TEXT NOT NULL, password TEXT NOT NULL);''')
c = sqlite3.connect('main.db')
class SignUp:
def __init__(self, username, password):
self.username = username
self.password = password
def signu(self):
cur = c.cursor()
cur.execute(f'''INSERT INTO info (username, password) VALUES (?, ?); ''', (self.username, self.password))
c.commit()
username = input("Username: ")
password = input("Password: ")
s = Signup(username, password)
s.signu()
print("Done!")