【问题标题】:inserting list in database in single column in python在python的单列中插入数据库中的列表
【发布时间】:2026-02-15 23:15:03
【问题描述】:

我有变量 varlist,其中包含列表元素并希望将其插入到我的数据库中 有两列 sess_id 是自动增量的,并列出了我要存储数据的位置 当我这样做时:

    varlist=["easy"]
    cursor_one.execute("insert into data (list) values(%s)", varlist)
    conn.commit()

我的数据已正确插入,但如果我增加编号。 varlist 中的元素:

    varlist=["easy","hard","medium"]
    cursor_one.execute("insert into data (list) values(%s)", varlist)
    conn.commit()

我遇到了这个错误:

     Traceback (most recent call last):
     File "C:\xampp\htdocs\eclipse_workspace\Project\check.py", line 19, in 
    <module>
     cursor_one.execute("insert into data (list) values(%s)", database_list)
      File "C:\Python34\lib\site-packages\mysql\connector\cursor.py", line 
     553, in execute
     "Not all parameters were used in the SQL statement")
     mysql.connector.errors.ProgrammingError: Not all parameters were used 
     in the SQL statement

这是我的全部代码

    import mysql.connector
     conn= mysql.connector.connect
    (user="root",password="",host="localhost",database="videojs")

    varlist=['easy','hard']

    cursor_one.execute("insert into data (list) values(%s)", varlist)
    conn.commit()

请帮帮我....

【问题讨论】:

  • 为什么这被标记为 MySQL 和 Sqlite3?它们根本不同。
  • ^ 另外,我感觉昨天已经有人问过了。
  • 导致我在 mysql db 中插入并在 python 中导入 sqlite 3
  • 你不能帮帮我吗...
  • 嗯,这对我来说仍然没有意义。为什么要使用两个数据库?不管怎样,你可以试试placeholders = ['%s' for x in range(len(varlist))] 然后cursor_one.execute("insert into data (list) values({})".format(placeholders), varlist)。但这可能不是最干净的代码,我不知道您是否需要 %s? 作为占位符,因为您并不具体说明您正在使用的技术。

标签: python mysql sql list sqlite


【解决方案1】:

我不完全清楚你想要完成什么。如果您尝试将整个列表插入数据库中的一个“单元格”,则需要将列表转换为字符串表示形式:

    import pickle

    varlist=["easy","hard","medium"]
    cursor_one.execute("insert into data (list) values(%s)", pickle.dumps(varlist))
    conn.commit()

但是,如果您尝试将列表中的每个条目放入数据库中自己的行中,则需要遍历列表,为每个条目插入一行:

    varlist=["easy","hard","medium"]
    for var in varlist: 
        cursor_one.execute("insert into data (list) values(%s)", var)
    conn.commit()

【讨论】:

  • 是的,一个单元格中的整个列表......好吧,先生,您的程序导致以下结果:............ AttributeError:'MySQLConverter'对象没有属性'_list_to_mysql'...... ..TypeError: Python 'list' 无法转换为 MySQL 类型....... "Failed processing format-parameters; %s" % err) mysql.connector.errors.ProgrammingError: Failed processing format-parameters; Python 'list' 无法转换为 MySQL 类型
  • 尝试使用 repr() 代替,就像我更新了要显示的示例一样。
  • raise errors.get_exception(packet) mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“%s)”附近使用正确的语法
  • 您使用的是什么数据库?你用 Mysql 和 sqlite3 标记了这个问题,现在你指的是 MariaDB。尝试腌制您的信息: import pickle; pickle.dumps(varlist) 而不是 repr(varlist)