kli*_*ron 2 python sqlalchemy pandas
有没有一种方法可以使熊猫(或sqlalchemy)输出将由调用to_sql()执行而不是实际执行的SQL ?在许多情况下,当我实际上需要用相同的数据更新多个数据库(而python和pandas仅存在于我的一台计算机中)时,这将很方便。
这比编程问题更多是过程问题。首先,是使用多个数据库。关系数据库管理系统(RDMBS)被设计为多用户系统,可同时用于许多用户/应用程序/客户端/机器。设计为作为一个系统运行,该数据库充当相关应用程序的中央存储库。一些人认为数据库应该对应用程序不可知,并且应该以数据为中心(Postgre人员),而另一些人则认为数据库应该以应用程序为中心(MySQL人员)。总体而言,要了解它们比平面文件电子表格或数据框架更复杂。
通常,RDMS有两种结构类型:
同时,Pandas虽然可以从RDMS导入/导出查询的结果集,但它不是数据库而是数据分析工具包(类似于MS Excel)。因此,它不维护DDL / DML过程的本机SQL方言。而且,熊猫在操作系统中的内存中运行,并调用Python脚本,并且不能被其他客户端/机器共享。Pandas不会按照您的意图跟踪更改,以便在脚本运行时了解数据框的不同状态,除非您使用前后方式进行设计并识别列/行更改。
说了这么多,为什么不使用ONE数据库并让您的Python脚本充当连接到数据库以将数据导入/导出到数据帧的众多客户端中的另一个。因此,在每个数据帧更改之后,实际上都要运行to_sql()。回想熊猫的to_sql使用if_exists参数:
# DROPS TABLE, RECREATES IT, AND UPDATES IT
df.to_sql(name='tablename', con=conn, if_exists='replace')
# APPENDS DF DATA TO EXISTING TABLE
df.to_sql(name='tablename', con=conn, if_exists='append')
Run Code Online (Sandbox Code Playgroud)
反过来,连接到集中式数据库的每个应用程序/机器都只需要刷新其实例,并且当前数据就可以实时满足其最终用途的需求。当然,如果在脚本尝试更新表时另一个用户在编辑模式下拥有表记录,则在多用户环境中表锁定状态可能是一个问题。但是这里的交易可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
5462 次 |
| 最近记录: |