我正在編寫一個腳本來同步Adwords帳戶和本地數據庫機智Sqlalchemy。 我下面的AdWords API的對象層次,所以我的第一個表是「運動」,二是「廣告組」SQLalchemy重複條目錯誤爲未知的值
這裏是如何我定義兩個:
class Campaign(Base):
__tablename__ = 'aw_campaigns'
id = Column(Integer, primary_key=True)
name = Column(String(99))
impressions = Column(Integer)
serving_status = Column(String(99))
start_date = Column(String(99))
status = Column(String(99))
def __init__(self, id, name, impressions, serving_status, start_date, status):
self.id = id
self.name = name
self.impressions = impressions
self.serving_status = serving_status
self.start_date = start_date
self.status = status
class Adgroup(Base):
__tablename__ = 'aw_adgroups'
id = Column(Integer, primary_key=True) # , primary_key=True
name = Column(String(99))
camp_id = Column(Integer, ForeignKey('aw_campaigns.id')) # , ForeignKey('aw_campaigns.id')
camp_name = Column(String(99))
ctr = Column(Float)
cost = Column(Float)
impressions = Column(Integer)
clicks = Column(Integer)
status = Column(String(99))
def __init__(self, id, name, camp_id, camp_name, ctr, cost, impressions, clicks, status):
self.id = id
self.name = name
self.camp_id = camp_id
self.camp_name = camp_name
self.ctr = ctr
self.cost = cost
self.impressions = impressions
self.clicks = clicks
self.status = status
我查詢API ,然後生成對象的列表在廣告組表中的行:
adgr_query = 'SELECT CampaignId, CampaignName, Clicks, Cost, Impressions, Ctr, Id, KeywordMaxCpc, Name, Settings, Status'
adgr_page = ad_group_serv.Query(adgr_query)[0]['entries']
adgr_ins = [Adgroup(i['id'],
i['name'],
i['campaignId'],
i['campaignName'],
i['stats']['ctr'],
i['stats']['cost']['microAmount'],
i['stats']['impressions'],
i['stats']['clicks'],
i['status']) for i in adgr_page if int(i['id']) not in adgr_exist]
但是當我犯我的錯誤:
(IntegrityError) (1062, "Duplicate entry '2147483647' for key 'PRIMARY'")
問題是我不知道該值來自哪裏。
'2147483647' in [i['id'] for i in adgr_page]
>>> False
'2147483647' in str(adgr_page)
>>> False
我對此很感興趣。
嘗試一個整數? '... 2147483647 in ...' – zzzeek
沒有什麼變化。此外,我使用一個隨機數作爲id(主鍵),並刪除了外鍵,同樣的錯誤。 –
您需要查看正在發佈的SQL並深入挖掘。 – zzzeek