flask内的mysql插入语句报错:1241, 'Operand should contain 1 column(s)

view.py内的代码如下:

……
c_location = request.form.getlist('c_location')

    connection = db.engine.connect()
    mysql = text(
        "INSERT INTO livingexpenses_coal (c_location) values (:m);"
    )
    result = connection.execute(mysql,m=c_location)

……

现在报错:
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1241, 'Operand should contain 1 column(s)') [SQL: 'INSERT INTO livingexpenses_coal (c_location) values (%s);'] [parameters: (['1asdf', '5'])] (Background on this error at: http://sqlalche.me/e/e3q8)

也就是c_location现在是数组,无法传入值,可正常sql语句可以使用:
INSERT INTO 表名 (列名,列名) VALUES(列值,列值),(列值,列值);来一次性插入多条数据。请各位告知该如何修改我的代码,万分感谢了。

阅读 10.9k
1 个回答

c_location 既然是数组, 应取其中的单个元素作为 SQL 参数, 如

    connection = db.engine.connect()
    mysql = text(
        "INSERT INTO livingexpenses_coal (c_location) values (:m);"
    )
    result = connection.execute(mysql,m=c_location[0])

或者将整个数组格式化(如果可以的话), 如

    connection = db.engine.connect()
    mysql = text(
        "INSERT INTO livingexpenses_coal (c_location) values (:m);"
    )
    result = connection.execute(mysql,m=';'.join(c_location))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题