我最近开始学习Flask,下面的教程要求我使用sqlite3作为数据库来存储用户名、密码和待办事项列表本身,来设置一个待办事项列表应用程序。到目前为止,我的模式和模型的设置与教程完全一样,但我的数据库文件没有更新。我的表显示在数据库文件中,但它们是空的。我做错了什么?
这是一个模式:
import sqlite3
connection = sqlite3.connect('to_do_list.db', check_same_thread = False)
cursor = connection.cursor()
cursor.execute(
"""CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(32),
password VARCHAR(32)
);"""
)
connection.commit()
cursor.close()
connection.close()以下是注册模式:
def signup(username, password):
connection = sqlite3.connect('to_do_list.db', check_same_thread = False)
cursor = connection.cursor()
cursor.execute( """SELECT password FROM users WHERE username = '{username}';""".format(username = username))
exist = cursor.fetchone()
if exist is None:
cursor.execute("""INSERT INTO users(username, password)VALUES('{username}', '{password}');""".format(username = username, password = password))
connection.commit()
cursor.close()
connection.close()
else:
return ('User already exists!')下面是烧瓶的路由:
@app.route('/signup', methods = ['GET', 'POST'])
def signup():
if request.method == 'GET':
message = 'Please sign up!'
return render_template('signup.html', message = message)
else:
username = request.form['username']
password = request.form['password']
return render_template('todo.html')发布于 2020-12-19 09:14:35
我决定睡在上面,想出了解决办法。本教程不清楚其中的一些功能,约翰·戈登的上述评论帮助我弄清楚了这一点。我不得不在路由函数中调用模型代码。我还必须“导入模型”,因为我的模型位于不同的.py文件中。
新的路由:
@app.route('/signup', methods = ['GET', 'POST'])
def signup():
if request.method == 'GET':
message = 'Please sign up!'
return render_template('signup.html', message = message)
else:
username = request.form['username']
password = request.form['password']
db = model.signup(username, password)
return render_template('todo.html')谢谢大家的投入!身体健康,安全,节日快乐。
发布于 2020-12-18 21:07:44
这里
import sqlite3
connection = sqlite3.connect('to_do_list.db', check_same_thread = False)
curr = connection.cursor()
curr.execute(
"""CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(32),
password VARCHAR(32)
);"""
)
curr.commit()
curr.close()您要将commit()函数添加到connection变量,而不是添加到游标中。
编辑,在这里:
def signup(username, password):
connection = sqlite3.connect('to_do_list.db', check_same_thread = False)
curr= connection.cursor()
curr.execute( """SELECT password FROM users WHERE username = '{username}';""".format(username = username))
exist = curr.fetchone()
if exist is None:
curr.execute("""INSERT INTO users(username, password)VALUES('{username}', '{password}');""".format(username = username, password = password))
curr.commit()
curr.close()
curr.close()
else:
return ('User already exists!')如果已经创建了一个重要,那么在编辑脚本之后,请记住删除文件,这样它就会创建一个新的文件。
https://stackoverflow.com/questions/65363886
复制相似问题