【问题标题】:Problem Updating Array of Varchars SQLALCHEMY更新 Varchars 数组的问题 SQLALCHEMY
【发布时间】:2020-09-28 03:00:37
【问题描述】:

当我尝试使用 SQLALCHEMY 升级 VARCHARS 数组时,我遇到了一些问题。 例如,我的输入是:

['Particular','Comercial']

但在我的数据库中,它显示为:

['[', "'", 'P', 'a', 'r', 't', 'i', 'c', 'u', 'l', 'a', 'r', "'", ',', "'", 'C', 'o', 'm', 'e', 'r', 'c', 'i', 'a', 'l', "'", ']']

我要更新的烧瓶代码是这个:

@app.route('/update', methods=['GET', 'POST'])
def update():
    if request.method == 'POST':
        my_data = Data.query.get(request.form.get('id_auto'))

        my_data.modelo = request.form['modelo']
        my_data.anofabricacion = request.form['anofabricacion']
        my_data.concesionario = request.form['concesionario']
        my_data.foto = request.form['foto']
        my_data.documentacion = request.form['documentacion']
        my_data.precio = request.form['precio']
        my_data.moneda = request.form['moneda']
        print(request.form['ciudadesdisp'])
        my_data.ciudadesdisp = request.form['ciudadesdisp']
        print(my_data.ciudadesdisp)
        print(my_data)
        my_data.tipocarroceria = request.form['tipocarroceria']
        my_data.sku = request.form['sku']
        print(request.form['usoauto'])
        my_data.usoauto = request.form['usoauto']
        print(my_data.usoauto)
        my_data.marca = request.form['marca']

        print(request.form.get('presentar'))

        if request.form.get('presentar') == 'on':
            print("entro if")
            my_data.presentar = True

        else:
            print("entro else")
            my_data.presentar = False

        db.session.commit()
        flash("¡Auto actualizado satisfactoriamente!")

        return redirect(url_for('Index'))

这是我声明我的班级的方式:

class Data(db.Model):
    __tablename__ = 'autos'
    id_auto = db.Column(db.VARCHAR, primary_key=True)
    modelo = db.Column(db.VARCHAR(255))
    anofabricacion = db.Column(db.BIGINT)
    concesionario = db.Column(db.VARCHAR(255))
    foto = db.Column(db.VARCHAR(255))
    documentacion = db.Column(db.VARCHAR(255))
    precio = db.Column(db.BIGINT)
    moneda = db.Column(db.VARCHAR(255))
    ciudadesdisp = db.Column(db.ARRAY(VARCHAR(255)))
    tipocarroceria = db.Column(db.VARCHAR(255))
    sku = db.Column(db.VARCHAR(255))
    usoauto = db.Column(db.ARRAY(VARCHAR(255)))
    marca = db.Column(db.VARCHAR(255))
    presentar = db.Column(db.BOOLEAN)

有人知道为什么会这样吗?

【问题讨论】:

    标签: python postgresql flask sqlalchemy flask-sqlalchemy


    【解决方案1】:
    import json
    json.loads(request.form['ciudadesdisp'])
    json.loads(request.form['usoauto'])
    

    【讨论】:

    • 嗨@송기두,我在尝试您的解决方案时遇到此错误:raise JSONDecodeError("Expecting value", s, err.value) from None 2020-06-09T02:38:13.048127+00:00 app[web.1]: json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
    • 问题是输入必须是这样的:["Particular","Comercial"],基本上是双引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 2012-12-22
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多