cursor.executemany(...)
模块的pymssql
是否有保证的执行顺序?
import pymssql
# Example retrieved from: http://pymssql.org/en/stable/pymssql_examples.html
# ...
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
# ...
cursor.executemany(
"INSERT INTO persons VALUES (%d, %s, %s)",
[(1, 'John Smith', 'John Doe'),
(2, 'Jane Doe', 'Joe Dog'),
(3, 'Mike T.', 'Sarah H.')])
conn.commit()
conn.close()
另请参阅:http://pymssql.org/en/stable/pymssql_examples.html
在实际情况下,我需要以特定顺序更新值(我有一个有序的元组数组),并希望避免使用cursor.execute(...)
一次执行那些更新。
像PEP 249这样的要求非常开放...
准备数据库操作(查询或命令),然后对序列seq_of_parameters中找到的所有参数序列或映射执行该操作。
模块可以通过多次调用.execute()方法或使用数组操作让数据库在一次调用中将整个序列作为一个整体来自由地实现此方法。
https://www.python.org/dev/peps/pep-0249/#executemany
这又引发了一个问题... pymssql
的PEP 249实现是否通过cursor.execute(...)
逐个执行?
答案 0 :(得分:2)
def executemany(self, operation, params_seq): self.description = None rownumber = 0 for params in params_seq: self.execute(operation, params) # support correct rowcount across multiple executes rownumber += self._rownumber self._rownumber = rownumber
根据源代码,executemany
函数仅迭代给定序列并调用execute
。