oracle: SQL命令没有正确完成



我试图从xsl文件更新一个表,但问题是,当我解析行时,我有空间。

<标题>功能:
def updateclientadress(nom, cnom, cplt_adr, adr, lieudit, cp, ville, numcli):
#nom = str(nom)
query = "update d_client set NOM = {}, CNOM = {}, CRUE = {}, RUE = {}, COMMUNE = {}, CODPOST = {}, VILLE = {} where NUMCLI = {}".format(nom, cnom, cplt_adr, adr, lieudit, cp, ville, numcli)
print(query)
cursorOracle.execute(query)

打印查询:

update d_client set NOM = STE SAS GIG, CNOM = nan, CRUE = Zone Industrielle de Pariacabo, RUE = Rue, COMMUNE = BP 81, CODPOST = nan, VILLE = nan where NUMCLI = 270

如您所见,在"NOM", "CRUE"中有空格,所以oracle不接受更新状态,

<标题>错误:
error:ORA-00933: la commande SQL ne se termine pas correctement

注意变量是从excel文件中提取的。目标是解析200,000行以更新数据库。

NEVER使用字符串连接(或模板字符串)来构建查询;这就是引入SQL注入漏洞的方式。

相反,您应该使用参数化查询并绑定变量:
def updateclientadress(nom, cnom, cplt_adr, adr, lieudit, cp, ville, numcli):
query = "update d_client set NOM = :1, CNOM = :2, CRUE = :3, RUE = :4, COMMUNE = :5, CODPOST = :6, VILLE = :7 where NUMCLI = :8"
cursorOracle.execute(query, [nom, cnom, cplt_adr, adr, lieudit, cp, ville, numcli])

最新更新