循环中的光标

我有一个使用CX_oracle模块的Python脚本.我有一个清单
我通过for循环迭代的值,然后插入
数据库.这还可以,但是我不确定我是否可以使用一个
所有插入物的光标,并将其定义在循环外部或
实例化并关闭循环本身内的光标.例如,
我有:
因为我在主机列表中:
光标= Connection.Cursor()
sql ="插入as_siebel_hosts_temp values('%s')"%(i)
cursor.execute(SQL)
光标.close()
我也尝试了:
光标= Connection.Cursor()
因为我在主机列表中:
sql ="插入as_siebel_hosts_temp values('%s')"%(i)
cursor.execute(SQL)
光标.close()
两者都可以正常工作,并在相同的时间内执行.我只是
试图了解什么是使用的"正确"方法.
谢谢,
汤姆

# 回答1


在1月3日,7:47*PM,T_Rectenwald 我想我已经知道了.答案将是第二个
选项,即保持光标的实例并在外面关闭
环形.我不知道一个光标可以用于多个
执行.
问候,
汤姆
# 回答2


在THU,2008-01-03,17:25 -0800,T_Rectenwald写道:
实际上,正确的方法将"都不".你永远不应该使用
字符串格式化以填充值为SQL查询. (这样做是原因
安全漏洞和性能问题.参见,例如,http://informixdb.blogspot.com/2007/...in-blanks.html
详细说明.)相反,您应该使用参数化查询.
使用参数化查询,您的代码变为以下内容:
光标= Connection.Cursor()
因为我在主机列表中:
cursor.execute("插入as_siebel_hosts_temp values(?)",(i,))
光标.close()
因为这将使数据库引擎不必重新置换
查询每次,如果列表较长,它将运行得更快.
更好的是使用执行人员:
光标= Connection.Cursor()
cursor.executemany("插入as_siebel_hosts_temp values(?)",
[(i,)for in hostList])))
光标.close()
取决于cx_oracle是否允许这样做,列表理解
该示例可以用发电机表达式代替
((i,)for in hostList),但我不知道CX_oracle是否允许
执行人士任意迭代.
希望这可以帮助,
- -
Carsten Haese http://informixdb.sourceforge.net
# 回答3


1月4日,上午5:11,Carsten Haese 您应该绑定所有变量以保存池.
光标= Connection.Cursor()
cursor.executemany("""插入as_siebel_hosts_temp
值(:全部,:lot,:of,:bind,:变量)
"""
,[(i,)[0] for in hostList]
)
connection.commit()
connection.close()
# 回答4


克里斯写道:2008-01-04,2008-01-04,克里斯写道:
嗯?在OP的示例中,表一列.我会公开
承认我对Oracle一无所知,但该代码没有
对我有意义.也许您正在尝试执行多排插入物,但是
那将通过执行( ),不是执行人(),不是吗?
另外,不是" [(i,)[0]在hostlist中的i]"与"我
在主机列表中]"哪个依次与" hostlist"完全相同?
- -
Carsten Haese http://informixdb.sourceforge.net
# 回答5


1月4日,下午4:32,Carsten Haese 嗯?在OP的示例中,表一列.我会公开
承认我对Oracle一无所知,但该代码没有
对我有意义.也许您正在尝试执行多排插入物,但是
那将通过execute()而不是执行者()来完成,不是吗?
另外,不是" [(i,)[0]在hostlist中的i]"与"我
在主机列表中]"哪个依次与" hostlist"完全相同?
- -
carsten haesehttp://informixdb.sourceforge.net
OPS示例具有格式的字符串,不知道其中有什么...
我的示例从您想要的每个记录中创建一个元组
插入并将它们用于绑定变量.
您可以通过hostlist进行循环,并对每个循环执行一次
如果你想.它不会产生很大的影响.
[(i,)[0]在hostList中的i]主要针对您,因为
您的结构最终成为列表中不起作用的元组
对于cx_oracle.您需要一个直接的元组才能与该陈述结合.
我的代码为执行者创建了一系列可用元组
功能.
hth,
克里斯

标签: python

添加新评论