首页 > 解决方案 > (MySQLdb._exceptions.OperationalError) (1048, "列 'name' 不能为空")

问题描述

我正在测试我的烧瓶网站(正在开发中)的“/contact”端点。联系表单存储用户的“Name”、“Email”和“Message”。每当我在表单中输入任何数据并提交时,都会引发以下错误:

sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1048, "Column 'name' cannot be null")

这让我感到惊讶,因为我没有将“名称”列留空:/ 我的问题不是这个重复 我已经完成了所有有助于烧瓶将数据存储在用户在“/联系人”中输入的数据库中的事情'端点。我仍然得到错误。

这是与“联系人”端点相关的代码:-

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
from flask_migrate import Migrate



app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://username:password@localhost/database'
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class Contact(db.Model):
   
    sno = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    message = db.Column(db.String(120), nullable=False)
    time = db.Column(db.String(12), nullable=True)
    email = db.Column(db.String(20), nullable=False)
    


@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if (request.method == 'POST'):
        # add entry to the database
        name = request.form.get('name')
        message = request.form.get('message')
        email = request.form.get('email')

        entry = Contact(name=name, message=message, time=datetime.now(),email=email )
        db.session.add(entry)
        db.session.commit()

    return render_template("contact.html") 





if __name__ == '__main__':

    app.run(debug=True)

这是我的 phpmyadmin 数据库: https ://i.paste.pics/AMTV9.png

以下是联系人端点的样子: https ://i.paste.pics/AMXQC.png

错误的回溯:

sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1048, "Column 'name' cannot be null")
[SQL: INSERT INTO contact (name, message, time, email) VALUES (%s, %s, %s, %s)]
[parameters: (None, 'Test', datetime.datetime(2020, 11, 9, 20, 8, 48, 2828), 'someone@gmail.com')]
   

谢谢你。

标签: pythonflasksqlalchemy

解决方案


当联系人模型中的字段“name”具有 nullable=False 时,您正尝试插入 name=None 的联系人。


推荐阅读