【问题标题】:Pandas create relations when importing to SQLite database?Pandas 在导入 SQLite 数据库时创建关系?
【发布时间】:2021-04-30 18:01:18
【问题描述】:

假设我有两个简单的 .csv 文件,我想将它们导入 SQLite 数据库:

id state
1 State1
2 State2
3 State3
id district values state_fk
1 District1 123 1
2 District2 456 2
3 District3 789 3

我每 2 周收到一次更新版本的 district 文件。我只需读取 csv 文件并通过 df.to_sql('table', con, if_exists='replace') 导入/更新它们。

熊猫有没有办法在states.iddistricts.state_fk之间设置PK-FK关系? 我想用新值定期更新district 表,并且不要在每次更新后再次手动设置关系。

【问题讨论】:

    标签: python pandas sqlite


    【解决方案1】:

    我认为用 pandas 创建外键是不可能的。这不是该模块的用途。

    不是每次都替换数据库表,您是否可以先使用 sqlite3 模块清空/截断它,然后使用 if_exists='append' 选项导入数据?看起来像这样:

    import sqlite3
    con = sqlite3.connect('example.db')
    cur = con.cursor()
    cur.execute('''TRUNCATE TABLE table''')
    con.commit()
    con.close()
    df.to_sql('table', con, if_exists='append')
    

    【讨论】:

    • 好的,谢谢!因此,为了在我的表之间创建关系,我必须通过 Pandas 之外的 SQL 语句以通常的方式进行操作?问题是,to_sql 非常方便,因为它已经创建了表格。
    • 如果你只替换表的内容而不替换表本身,每次更新时表之间的关系不会被删除,所以你只需要创建一次然后忘记它
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多