Python 使用附加循环的含义
我有脚本Python 使用附加循环的含义,python,Python,我有脚本A: ... cursor.execute('SELECT col1, col2 FROM tableA') rows = cursor.fetchall() for row in rows: statement = 'INSERT INTO tableB (col1, col2) VALUES (%s, %s)' args = row.col1, row.col2 cursor.execute(statement, args) 和脚本B: ... column
A
:
...
cursor.execute('SELECT col1, col2 FROM tableA')
rows = cursor.fetchall()
for row in rows:
statement = 'INSERT INTO tableB (col1, col2) VALUES (%s, %s)'
args = row.col1, row.col2
cursor.execute(statement, args)
和脚本B
:
...
columns = []
cursor.execute('SELECT col1, col2 FROM tableA')
rows = cursor.fetchall()
for row in rows:
column_object = [row.col1, row.col2]
columns.append(column_object)
for column_object in columns:
statement = 'INSERT INTO tableB (col1, col2) VALUES (%s, %s)'
args = column_object[0], column_object[1]
cursor.execute(statement, args)
使用一个小样本测试集,我运行了两个脚本5次,性能可以忽略不计。一种方法比另一种更可取吗?脚本A使用更少的内存,并且更短、更简单。所以我会用A
您可以通过将列的构建转换为生成器来解决B中的内存问题,但它仍然比a更复杂。不要在查询中手动插入文本。SQL注入就是这样发生的。为什么不使用参数化查询?@Blender这是一个内部维护脚本。@FreshPrinceOfSO bad practices==bad practices。。。内部使用与否-p使用参数后,使用一种方法是否会影响另一种方法?由于游标(
cursor.fetchall()
)的结果存储在行
,我假设使用游标执行新语句时循环不会中断?