在Python中使用字典键值对更新查询

问题描述 投票:1回答:1

我在学习python的初期,我的要求是基于Oracle Table中的一列,即使用字典键对值更新其他列。我的字典看起来像这样

{'美国':'美国','法国':'欧洲','英国':'欧洲'}

因此,当“国家/地区”列为“美国”时,描述列应更新为“美国人”,在数据库连接后,这是我的代码

query = "select country from details_table "
        cursor.execute(query)
        returnrows = cursor.fetchone()
        while returnrows is not None:
                pickedvalue=returnrows[0]

               mainvalue=file_dictionary[pickedvalue]


                updatequery = "update details_table set description='%s' where country='%s'"

                cursor.execute(updatequery %(mainvalue,pickedvalue))
                returnrows = cursor.fetchone()

[当我执行此即时消息时出现错误“不是查询”,因此我尝试每次更改引文时都会得到不同的错误

updatequery = "update details_table set description=%s where country=%s"
updatequery = "update details_table set description='%s' where country=%s"

对于以上两个查询,我得到了ORA-00933:SQL命令未正确结束

updatequery = "update details_table set description=%s where country='%s'"

为此,我得到了ORA-00904:“ AMERICAN”:无效的标识符

有人可以告诉我这将是正确的查询,我什至尝试如下但没有运气

updatequery="update details_table set description={} where country='{}'"
sql=updatequery.format(main_value,pickedvalue)
cursor.execute(sql)

python-3.x oracle dictionary cx-oracle
1个回答
0
投票

我不知道魔术是什么,它从此开始工作,我无法理解这段代码与上面的代码之间的逻辑区别是什么,请让我知道

 query = "select country from details_table"
        cursor.execute(query)
        returnrows = cursor.fetchall()
        for rows in returnrows:
            for pickedvalue in rows:
                requiredvalue = file_dictionary[pickedvalue]

                print(requiredvalue)
                updatequery = "update details_table set description='%s' where country='%s'"
                cursor.execute(updatequery % (requiredvalue, pickedvalue))

        connection.commit()

© www.soinside.com 2019 - 2024. All rights reserved.