我正在使用 com.ziclix.python.sql
包在Jython中编程到SQL数据库 . 我'm wondering if the package has support in its prepared statements for SQL INSERT/UPDATE statements where you pass multiple rows of values rather than just one row, so that you'在一个INSERT语句中插入多行 . 让我解释 .
这是一个基本的SQL INSERT语句:
INSERT INTO Names (FirstName, LastName) VALUES ("John", "Doe");
使用zxJDBC准备好的语句,这非常简单:
# Assume cursor object
statement = 'INSERT INTO Names (FirstName, LastName) VALUES (?, ?)'
cursor.execute(statement, ('John', 'Doe'))
但是我感兴趣的那种INSERT语句是你插入多行值的地方,如下所示:
INSERT INTO Names (FirstName, LastName) VALUES ("John", "Doe"), ("Mary", "Smith");
有没有办法使用预准备语句来做到这一点?如果可能的话,我宁愿使用预准备语句来构建SQL查询而不是字符串插值 . 谢谢 .
1 回答
由于zxJDBC实现PEP 249 " Python Database API Specification v2.0",您可以使用executemany()方法来完成此任务:
Update :看起来这个太慢了,因为zxJDBC只是多次调用执行而没有优化查询 . 相反,你可以这样做:
这确实涉及一些字符串操作,但它保留了参数列表的使用并允许单个DB往返 .