【发布时间】:2018-10-02 20:04:33
【问题描述】:
我正在开发一个 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 创建了表。
请帮我消除这个错误。谢谢。
【问题讨论】:
标签: python mysql flask flask-sqlalchemy