Вставить строку Postgresql с SQL -ALCHEMY со значением по умолчанию - PullRequest
0 голосов
/ 19 июня 2020

У меня есть таблица в postgresql с идентификатором, который автоматически создается благодаря последовательностям. Но теперь, когда я использую flask с SQLALCHEMY, когда я пытаюсь вставить значение, он говорит, что у меня остался параметр, потому что я не передаю значение ID, потому что это будет postgres. Я думаю, что мне следует сменить модель, но не знаю как.

Присоединяюсь к вам, моя модель:

class User(UserMixin, db.Model):
    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True) # primary keys are required by SQLAlchemy
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(100))
    name = db.Column(db.String(1000))
    permitido = db.Column(db.BOOLEAN)
    admin = db.Column(db.BOOLEAN)
    superuser = db.Column(db.BOOLEAN)

    def __init__(self, id, email, password, name, permitido, admin, superuser):
        self.id = id

        self.email = email
        self.password = password
        self.name = name
        self.permitido = permitido
        self.admin = admin
        self.superuser = superuser

А вот мой код для вставки:

@app.route('/insertinternalusers', methods=['POST'])
def insertinternalusers():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']
        name = request.form['name']

        if request.form.get('permitido'):
            permitido = True
        else:
            permitido = False

        if request.form.get('admin'):
            admin = True
        else:
            admin = False

        superuser = False

        my_data = User(email, password, name, permitido, admin, superuser)
        db.session.add(my_data)
        db.session.commit()

        flash("¡Se agrego satisfactoriamente un Usuario!")

        return redirect(url_for('show_internalusers'))

Спасибо,

Джонатан Прието

1 Ответ

1 голос
/ 19 июня 2020

Пользовательские классы принимают аргумент id.

Вызывается так

 my_data = User(None, email, password, name, permitido, admin, superuser)

или

def __init__(self, email, password, name, permitido, admin, superuser):
    self.email = email
    self.password = password
    self.name = name
    self.permitido = permitido
    self.admin = admin
    self.superuser = superuser
...