天天看点

pandas如何往mysql追加数据_如何用pandas将新列附加到MySQL中?

我的理解是,您可以从数据库中提取数据(在本例中是MySQL),将这些数据加载到pandas df中进行操作(添加新列、SQL中不容易完成的复杂计算等),然后将新列加载回MySQL。但是,最后一步是将新创建的列添加回MySQL中的同一个现有表中,在那里我提取了原始数据,但我遇到了麻烦。{我在某处发现了一个相似的问题,但是我发现了一个关键的组成部分。在

我正在使用pandasto_sql来执行此任务(还有更好的选择吗?)。我的代码从MySQL表中提取加密数据,将其加载到pandas df中,并添加一个新的volatile列(我知道您可以在SQL中计算这个值,这只是一个示例)。在

SQL表(加密)date open_price close_price high_price low_price market_cap volume

1 2018-03-11 8852.78 9578.63 9711.89 8607.12 149,716,000,000 6,296,370,000

2 2018-03-10 9350.59 8866.00 9531.32 8828.47 158,119,000,000 5,386,320,000

3 2018-03-09 9414.69 9337.55 9466.35 8513.03 159,185,000,000 8,704,190,000

4 2018-03-08 9951.44 9395.01 10147.40 9335.87 168,241,000,000 7,186,090,000

熊猫df

^{pr2}$

我首先进入MySQL并使用以下命令添加了一个新列:ALTER TABLE `crypto`

ADD COLUMN Volatility float NOT NULL;

下面的代码是我第一次将数据推送到MySQL的代码。我将if_exists更改为df.to_sql(name='crypto', con=engine, if_exists = 'append', chunksize=10000)

DatabaseError: (mysql.connector.errors.DatabaseError) 1364 (HY000): Field 'Volitility_90' doesn't have a default value

如何才能在MySQL表中只添加一个新列?我是否需要使用另一个包并使用cursor.execute()。任何关于这段代码的帮助,或者一些在线教程都会很有帮助!我似乎找不到关于这个特定示例的大量内容,这让我对整个数据操作策略进行了重新猜测。在