我有一个Pandas数据框,我正在尝试使用MySQLdb和to_sql插入MySQL表。该表具有'allocationid'作为主键和自动增量..我将每天执行此操作,从MySQL表中删除当天的先前数据并重新插入来自Pandas数据帧的更新数据。因此想要自动增量的主键(我不会在线上使用它,但可能想要引用它)。
代码是......
columns = ('date','tradeid','accountid','amount')
splitInput = pd.DataFrame(columns = columns)
splitInput['accountid'] = newHFfile['acctID']
splitInput['tradeid'] = newHFfile['Ref']
splitInput['amount'] = newHFfile['AMOUNT1']
splitInput['date'] = newHFfile['Trade Date']
db = MySQLdb.connect(host="(hostIP)", port=3306, user="user", passwd="(passwd)", db="(database)")
cursor = db.cursor()
query = """delete from splittrades where date = """ + runymdformat + """ """
cursor.execute(query)
db.commit()
splitInput.to_sql(con = db, name = 'splittrades',if_exists = 'append',flavor = 'mysql',index = False)
db.commit()
db.close()
问题在于,如果没有为主键添加列,我会得到'OperationalError:(1364,“字段'allocationid'没有默认值”)'
如果我添加一个主键列并将其留空,则为null,我得到OperationalError:(1366,“不正确的整数值:''用于第1行的'allocationid'列”) 如果我在allocationid列中使用1或0,则会得到重复值错误消息。
如果你没有指定主键,MySQL通常会自动递增主键 - 有没有办法让我能用Python工作?
PS不是Python专家,所以请轻轻地对待我 - 谢谢: - )