Python sqlite:使用未指定数量的参数的executemany()

Posted

技术标签:

【中文标题】Python sqlite:使用未指定数量的参数的executemany()【英文标题】:Python sqlite: using executemany() with unspecified number of parameters 【发布时间】:2022-01-21 16:49:03 【问题描述】:

我正在将 python3 与 pyodbc 库一起使用。 我正在将远程 MSSQL 数据库中的数据提取到本地 sqlite 文件中。我在两个数据库中都有一个名为“产品”的表,我正在做这样的事情:

prod_list = remote_db.cursor.execute('select * from Products').fetchall()
local_db.cursor.executemany('INSERT INTO Products VALUES(?, ?, ?, ?)', prod_list)

在我有一个包含 50 多个字段的表之前效果很好。我真的必须写'吗?五十次?

【问题讨论】:

【参考方案1】:

考虑以prod_list 的长度为条件动态创建准备好的语句:

qmarks = ", ".join('?' for i in prod_list[0])

sql = f"INSERT INTO Products VALUES (qmarks)"
local_db.cursor.executemany(sql, prod_list)

【讨论】:

以上是关于Python sqlite:使用未指定数量的参数的executemany()的主要内容,如果未能解决你的问题,请参考以下文章

Python Sqlite3 executemany 中的绑定数量不正确

模板未显示通过传递参数使用视图函数从 sqlite 获取的数据(为空白)

Python 3 SQLite3 - 绑定数量不正确

如何增加 Sqlite FTS4 片段大小

Gem::LoadError: 为数据库适配器指定了“sqlite3”,但未加载 gem

sqlite 和 python 错误-提供的绑定数量不正确