【发布时间】:2021-03-14 05:02:39
【问题描述】:
我有一个包含 8 列的现有 SQL 表。现在我也有一个 2 列的 DataFrame。这 2 列与现有 SQL 表的前 2 列具有相同的名称。我试图将我的 df 附加到现有的 SQL 表中。因此,对于前 2 列,我需要它来附加我的 df 的数据,而对于最后 6 列,我需要它来写入 None 或 NaN 或 0。
这是我的代码:
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
df_2_columns = pd.DataFrame(np.column_stack([ls_meet_id]),
columns=['ID', 'Value'])
engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
.format(user="root",
pw="*****.",
db="*****"))
# insert into table
df_2_columns.to_sql(my_table, con = engine, if_exists = 'append', chunksize = 1000)
当我在上面运行时,我收到以下错误:
ValueError: Empty data passed with indices specified.
我确定这与我的 df 仅包含 2 列数据而我的 eisting sql 表包含 8 列数据这一事实有关...如何解决?
【问题讨论】:
-
即兴发挥,我认为您应该尝试使用 sqlalchemy 来更新特定的列。
-
@sammywemmy 喜欢你的意思吗?可以用代码显示吗?为什么这比附加更好?
标签: python mysql pandas dataframe sqlalchemy