ошибка целостности sqlalchemy.exc.: (sqlite3.Ошибка ошибки целостности) НЕ выполнено ограничение NULL: user.id

#python #sqlite #flask #sqlalchemy #flask-sqlalchemy

Вопрос:

Я получаю ошибку, когда пытаюсь добавить данные в базу данных. Я настроил базу данных, и это приложение

 class User(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(120),nullable = False)
    email = db.Column(db.String(70),primary_key=True,nullable = False)
    post = db.Column(db.String(10000),default ="")
    date_created = db.Column(db.DateTime, default = datetime.utcnow)

    def __repr__(self):
        return f'{self.id},{self.name},{self.email},{self.post},{self.date_created}'
 

И у меня возникают проблемы всякий раз, когда я пытаюсь создать базу данных в приведенном ниже коде:

 @app.route('/sign_up',methods = ["POST","GET"])
def sign_up():
    if request.method == 'POST':
        email = request.form.get('email')
        first_name = request.form.get('first_name')
        password_1 = request.form.get('password')
        password_2 = request.form.get('password-2')

        user = User.query.filter_by(email=email).first()

        if user:
            flash("Email aleady exists", category = 'error')
        elif len(email) < 5:
            flash("Email name must be greater than 5 characters", category='error')
        # We'll come back to you tomorrow (i.e 25th March)
        elif len(first_name) < 2:
            flash("First Name too short",category='error')
        elif password_1 != password_2:
            flash("Make sure you typed the password correctly",category='error')
        elif len(password_1) < 8:
            flash("Make sure your password as at least 8 characters", category='error')
        else:
            new_user = User(name= first_name,email = email)
            db.session.add(new_user)
            db.session.commit()
            flash("Account Created",category='success')
            return redirect(url_for('home'))

    return render_template("sign-up.html")
 

Комментарии:

1. ошибка целостности sqlalchemy.exc.: (sqlite3. IntegrityError) не null ограничение не удалось: пользователь.идентификатор [в SQL: вставить в пользователя (имя, электронная почта, Почта, date_created) значения (?, ?, ?, ?)] [параметры: (‘тест’, ‘presidentdavid@gmail.com’, «, ‘2021-04-06 20:10:03.191785’)] (фон на этой ошибке по адресу: sqlalche.я/е/14/gkpj ). Ошибка, которую я получаю

2. Покажите обратную связь как правильно отформатированный текст в вопросе, а не как комментарий. Покажите код, вызвавший обратную трассировку (правильно отформатированный в вопросе). Не говорите просто о «проблемах». Что происходит, что должно произойти?

3. Извините… Лол… Это мой первый вопрос, с которым я все еще справляюсь… Попытался бы отредактировать его обратно

Ответ №1:

Обновите таблицу в Postgresql. сделайте автоматическое увеличение идентификатора.

или предоставьте идентификатор с данными ( устаревшими )

Комментарии:

1. Спасибо.. Я попробовал автоинкремент.. Это не сработало … И я не совсем понимаю, как предоставить идентификатор с данными