【问题标题】:how to insert an array into database in python?如何在python中将数组插入数据库?
【发布时间】:2019-12-01 00:35:03
【问题描述】:

我有一个名为 my_python 的数据库和一个名为 my_transport 的表。表中有 3 列:id、transport 和 fee。对于第一列“id”,我让它自动递增,这样我就不必在其中插入任何值。我的问题是如何将 my_trans 和 my_fee 的值插入到数据库表中?

    import mysql.connector

    my_trans=['car','train','ship','train']  
    my_fee=[200,300,150,200]

    try:
        connection = mysql.connector.connect(host='localhost',
                                 database='my-python',
                                 user='root',
                                 password='')
        sql_insert_query = """INSERT INTO my_transport
                               (`transport`, `fee`) VALUES (my_trans, my_fee)"""
        cursor = connection.cursor()
        result = cursor.execute(sql_insert_query)
        connection.commit()
        print ("Record inserted successfully into table")  except mysql.connector.Error as error :
        connection.rollback() #rollback if any exception occured
        print("Failed inserting record into table {}".format(error))  finally:
         #closing database connection.
        if(connection.is_connected()):
            cursor.close()
            connection.close()
            print("MySQL connection is closed")

我尝试了下面的代码,但它说:

"Failed inserting record into table 1054 (42S22): Unknown column 'my_trans' in 'field list'"

【问题讨论】:

  • 为了完整起见,您还可以包括您遇到的错误吗?或者,如果您没有收到错误,则为预期的输出。
  • 我收到此消息:“将记录插入表 1054 (42S22) 失败:'字段列表'中的未知列 'my_trans'
  • 您要插入逗号分隔的值吗?
  • 我希望它们插入不同的行
  • @EdBangga 我已经尝试过您的建议,结果显示以下消息: Failed inserting record into table 1064 (42000): You have an error in your SQL syntax;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '[my_transport] (transport, fee) VALUES ([my_trans' at line 1

标签: mysql sql python-3.x


【解决方案1】:

使用 .executemany 插入提到的记录数组here

my_trans = []
my_trans.append=('car', 200)
my_trans.append('train', 300)
my_trans.append('ship', 150)
my_trans.append('train', 200)

sql_insert_query = 'INSERT INTO my_transport
                               (transport, fee) VALUES (%s, %s)'
cursor = connection.cursor()
result = cursor.executemany(sql_insert_query, my_trans)

【讨论】:

  • 我在使用 executemany 后收到了这条消息: Traceback (last recent call last): "File "/home/acer/PycharmProjects/bs1/try.py", line 14, in result = cursor .executemany(sql_insert_query, my_trans, my_fee) TypeError: executemany() 接受 3 个位置参数,但给出了 4 个”。然后我尝试将 my_trans 和 my_fee 分开,但我收到了这条消息: Failed inserting record into table 多行 INSERT 的重写语句失败。检查 SQL 语法。
  • 这个怎么样?
  • 也许只有我一个人,但这个答案中的python代码似乎不是有效的语法......
  • append() 是一个函数,你不要分配给它。
猜你喜欢
  • 1970-01-01
  • 2011-04-13
  • 2013-09-08
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2016-11-29
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多