使用 Python 将 pandas df 导入 SQLite

Importing pandas df to SQLite with Python

我尝试按照 pandas 和 sqlite3 文档进行操作,但我不完全确定我的设置是否正确。

我用peewee建立了这种格式的数据库。我想让 stock_id 成为自动进入 1,2,3,4,5,6 等的数字。当我用 SQLite 浏览器手动添加条目时,它似乎是这样工作的。

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

我使用 pandas 导入 CSV 文件并将它们转换为数据帧。现在尝试将它们发送到 SQLite“股票”table。

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 列等。

这是 table 导入前的样子

这是导入后的样子。它就像删除了 stock_id 列。

我不想重建 table,只是更新它并在库存不存在时添加新行。除了具有自动生成的唯一 stock_id,因此它可以作为另一个 table 的外键。我试着把它变成 'update' 而不是 'replace' 但它给了我一个错误。

同样在 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()

它会自动生成 stock_id