问题描述
我试图遵循pandas和sqlite3文档,但是我不确定是否可以正确设置。
我以这种格式用peewee设置了数据库。我想让stock_id为自动变为1,2,3,4,5,6的数字。当我使用sqlite browser手动添加条目时,它似乎可以正常工作。
class Stocks(Model):
stock_id = IntegerField(primary_key=True,index=True,unique=True)
stock_ticker = CharField(max_length = 10,unique=True)
stock_name = TextField()
stock_exchange = TextField()
stock_ipoDate = DateField()
stock_delistingDate = DateField()
stock_status = TextField()
class Meta:
database = db
我使用熊猫导入了CSV文件,并将其转换为数据框。现在尝试将它们发送到sqlite“库存”表。
conn = sqlite3.connect('stockmarket.db')
c = conn.cursor()
df.to_sql('stocks',conn,if_exists='replace',index = False)
conn.commit()
现在确定如何使其跳过第一行?我认为它将以与命名相同的方式将事物导入sqlite。就像索引是stock_ticker一样,它将添加到stock_ticker列等中。
这是导入后的外观。它像删除了stock_id列。
我不想重建表格,但是只要不存在库存就更新它并添加新行。除了具有自动生成的唯一stock_id之外,它还可以是另一个表的外键。我尝试将其设置为“更新”而不是“替换”,但这给了我一个错误。
在sqlite浏览器中,我也看到行的#1到#5。那是我应该用于外键的自动生成的ID吗?
非常感谢任何帮助。
解决方法
最后弄清楚了
https://www.excelcise.org/python-sqlite-insert-data-pandas-data-frame/
conn = sqlite3.connect('stockmarket.db')
c = conn.cursor()
df.to_sql(name='stocks',con=conn,if_exists='append',index=False)
conn.commit()