仅更新 python 最后一条记录
update python last record only
我是新手 python 用户,由于某些原因,以下更新不起作用。
我期望的是,它使用 API 拉动进行更新,当我使用打印时,它显示的正是我所期望的,5 条记录。这些是 2 个单独的 XML 文件,这些文件随后被处理,总共包含这 5 条记录。一个 XML 有 3 行,另一个有 2 行。
char01
char02
char03
char04
char05
该代码使用了一个 URL ,需要用 kyeID 和 vCode 填充。 keyID 和 vCode 存储在 table 中。这一切都很好。当我进行打印时,它会打印 5 个单独的记录。
现在它真正做的是当它更新到 SQL 时,只有最后一条记录被插入 5 次。我不知道这怎么会发生。然而,当我插入时,它工作得很好。
数据库中的最终结果是最后一条记录5次:
char05
char05
char05
char05
char05
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 子句。
我是新手 python 用户,由于某些原因,以下更新不起作用。
我期望的是,它使用 API 拉动进行更新,当我使用打印时,它显示的正是我所期望的,5 条记录。这些是 2 个单独的 XML 文件,这些文件随后被处理,总共包含这 5 条记录。一个 XML 有 3 行,另一个有 2 行。
char01
char02
char03
char04
char05
该代码使用了一个 URL ,需要用 kyeID 和 vCode 填充。 keyID 和 vCode 存储在 table 中。这一切都很好。当我进行打印时,它会打印 5 个单独的记录。
现在它真正做的是当它更新到 SQL 时,只有最后一条记录被插入 5 次。我不知道这怎么会发生。然而,当我插入时,它工作得很好。
数据库中的最终结果是最后一条记录5次:
char05
char05
char05
char05
char05
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 子句。