m0_57616435 2021-12-15 21:23 采纳率: 66.7%
浏览 11

检查 POST 得到的数据是否已经存在于数据库中

POST 得到的数据如果已经存在于数据库 Genre 表里,应该显示“该数据已存在于数据库中”,但代码出现问题,只会直接显示“未能将指定内容加入数据库”

@app.route('/add/genre', methods = ['POST'])
def add_genre():
    if request.method == 'POST':
        genre = request.form['genre']
    conn = sqlite3.connect("Mydatabase.db")
    cur = conn.cursor()
    cur.execute("SELECT Name FROM Genre")
    genreName = cur.fetchall()
    string = "成功添加 " + genre + " 到数据库."
    prompt = {string}
    error = ""
    if genre in genreName:     // ←
        prompt = {"该数据已存在于数据库中"}
        error = "exist"
    else:
        with sqlite3.connect("Mydatabase.db") as conn:
            try:
                cur = conn.cursor()
                cur.execute("INSERT INTO Genre (Name) VALUES (?)", ('genre'))
                conn.commit()
            except:
                prompt = {"未能将指定内容加入数据库"}
                error = "exist"
    
    return render_template('add_genre.html', messages=prompt, error=error)

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-17 16:23
    关注

    提下建议
    1、如果数据量非常大,这样直接读整个库 , 内存资源用太大。
    2、建议改成这样的逻辑(按你的代码,大概做了调整,没验证过)

    @app.route('/add/genre', methods=['POST'])
    def add_genre():
        prompt = {"没有数据"}
        error = "error"
        if request.method == 'POST':
            genre = request.form['genre']
            conn = sqlite3.connect("Mydatabase.db")
            cur = conn.cursor()
            cur.execute("SELECT Name FROM Genre where name = '{}'".format(genre))
            genreName = cur.fetchall()
            if len(genreName)>0:
                prompt = {"该数据已存在于数据库中"}
                error = "exist"
            else:
                try:
                    cur = conn.cursor()
                    cur.execute("INSERT INTO Genre (Name) VALUES (?)", ('genre'))
                    conn.commit()
                except:
                    prompt = {"未能将指定内容加入数据库"}
                    error = "exist"
                
                string = "成功添加 " + genre + " 到数据库."
                prompt = {string}
                error = ""
    
            
    return render_template('add_genre.html', messages=prompt, error=error)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月15日

悬赏问题

  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值