gpt4 book ai didi

python - sqlalchemy.exc.IntegrityError - mySql - 自动增量和数据库存储中的主键错误

转载 作者:行者123 更新时间:2023-11-29 17:41:45 27 4
gpt4 key购买 nike

我正在开发 Flask-sqlalchemy 应用程序并使用 mySql 数据库。我有一个表单,我从中接收要存储在名为“intent”的数据库表中的数据。该表有 2 列:intent_id 和intent_name。

这是我的 SqlAlchemy 模型的代码:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Intent(db.Model):
__tablename__ = 'intent'
intent_id = db.Column('intent_id', db.Integer, primary_key=True)
intent_name = db.Column(db.String(250))

这是我的 Flask Routes 文件的代码:

from flask import Flask, render_template, request, session, redirect, url_for
from models import db, Intent, Sentence

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost/test'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)


@app.route("/", methods = ['POST', 'GET'])
def index():
if request.method == 'POST':
intentobj = Intent(intent_name = request.form['intent'])

db.session.add(intentobj)
db.session.commit()

return render_template("index.html", intent_data = Intent.query.all())
elif request.method == 'GET':
return render_template("index.html", intent_data = Intent.query.all())

我收到此错误:

sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1364, "Field 'intent_id' doesn't have a default value") [SQL: 'INSERT INTO intent (intent_name) VALUES (%s)'] [parameters: ('def',)]

当我创建数据库表类的对象时,我只在其中存储intent_name(如上所述)。我希望 Intent_id 自动递增并存储在数据库中,因为它是主键,但我猜它不是这样工作的。

请注意,我使用 phpmyadmin 创建了该表,而不是通过 python。

请帮我消除这个错误。谢谢。

最佳答案

我不认为 mysql 会自动增加主键。将 autoincrement=True 添加到列语句

intent_id = db.Column('intent_id', db.Integer, primary_key=True, autoincrement=True)

或者,由于您直接使用 sql 生成代码,因此使用

创建表
intent_id int NOT NULL PRIMARY_KEY AUTO_INCREMENT

更新问题出在数据库表上;主键未设置为自动增量。所以,尝试这个命令确实有效:

    ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

关于python - sqlalchemy.exc.IntegrityError - mySql - 自动增量和数据库存储中的主键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com