【发布时间】:2020-09-15 03:48:22
【问题描述】:
问题如何将我的数据框附加到数据库,以便它检查 stock_ticker 是否存在,仅附加 stock_ticker 不存在的行?
这是我做的过程
- 将 CSV 文件导入 pandas 数据框
- 将列名指定为与数据库中的相同
- 使用以下代码将数据帧发送到数据库,但获取
sqlite3.IntegrityError: UNIQUE constraint failed: stocks.stock_ticker
conn = sqlite3.connect('stockmarket.db')
c = conn.cursor()
df.to_sql(name='stocks', con=conn, if_exists='append', index=False)
conn.commit()
我查看了其他完整性错误案例,但似乎找不到适用于附加数据帧的案例?我找到并尝试了这个,但它所做的只是不附加任何内容。
try:
conn = sqlite3.connect('stockmarket.db')
c = conn.cursor()
df.to_sql(name='stocks', con=conn, if_exists='append', index=False)
conn.commit()
except sqlite3.IntegrityError:
print("Already in database")
我不确定我是否正确理解了迭代的东西
How to iterate over rows in a DataFrame in Pandas
所以我尝试了这个,但它只是在数据库中为每个人打印出来。更难的是,有 4 个新的股票代码。
for index, row in df.iterrows():
try:
conn = sqlite3.connect('stockmarket.db')
c = conn.cursor()
df.to_sql(name='stocks', con=conn, if_exists='append', index=False)
conn.commit()
except sqlite3.IntegrityError:
print("Already in database")
任何见解都非常感谢:)
【问题讨论】:
标签: python pandas sqlite dataframe finance