仅更新 Python 最后一条记录



我是新手python用户,由于某种原因,以下更新不起作用。

我期望的是它使用 API 拉取进行更新,当我使用打印时,它完全显示我期望的 5 条记录。这些是 2 个单独的 XML 文件,随后进行处理,总共包含这 5 条记录。一个 XML 有 3 行,另外有 2 行。

字符01
字符02
字符03
字符04
字符05

该代码使用了一个 URL,需要用 kyeID 和 vCode 填充。密钥 ID 和虚拟代码存储在表中。这一切都很好用。当我打印时,它会打印 5 条单独的记录。

现在它真正做的是,当它将其更新为 SQL 时,只有最后一条记录入 5 次。我不知道这是怎么发生的。但是,当我插入时,它工作得很好。

数据库中的最终结果是最后记录的 5 次:

字符05
字符05
字符05
字符05
字符05

import pyodbc
import time
import tempfile
import cPickle
import zlib
import os
from os.path import join, exists
from httplib import HTTPException
import eveapi
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=MyServer;DATABASE=TESTDB;Integrated Security=True')
cursor = cnxn.cursor()
cursor.execute("SELECT keyID, vCode FROM characters_apikey")
for row in cursor.fetchall():
    sql_keyID = row.keyID
    sql_vCode = row.vCode
    api = eveapi.EVEAPIConnection()
    auth = api.auth(keyID=sql_keyID, vCode=sql_vCode)
    result2 = auth.account.Characters()

    for character in result2.characters:
        print (character.name)
        cursor.execute("update characters set characterName = ?, characterID = ?, corporationName =?, corporationID = ?, allianceID = ?, allianceName = ?, factionID = ?, factionName =? ;", (character.name, character.characterID, character.corporationName, character.corporationID, character.allianceID, character.allianceName, character.factionID, character.factionName))
    cursor.commit()

我在这里做错了什么更新?

调用应如下所示:

cursor.execute("update characters set characterName = ?, characterID = ?, corporationName =?, corporationID = ?, allianceID = ?, allianceName = ?, factionID = ?, factionName =? where keyID = ? and vCode = ?;", (character.name, character.characterID, character.corporationName, character.corporationID, character.allianceID, character.allianceName, character.factionID, character.factionName, row.keyID, row.vCode))

只是一个善意的提醒,你错过了where子句。

最新更新