是否有一种方法使pandas(或sqlalchemy)输出通过调用to_sql()
执行的SQL而不是实际执行它?在许多情况下,这将非常方便,因为我需要使用相同的数据更新多个数据库,而Python和pandas仅存在于我的一台机器上。
是否有一种方法使pandas(或sqlalchemy)输出通过调用to_sql()
执行的SQL而不是实际执行它?在许多情况下,这将非常方便,因为我需要使用相同的数据更新多个数据库,而Python和pandas仅存在于我的一台机器上。
这更像是一个过程性问题而非编程问题。首先,涉及到多个数据库的使用。关系型数据库管理系统(RDMBS)旨在为许多同时用户/应用程序/客户端/机器设计多用户系统。设计为作为一个系统运行,数据库作为相关应用程序的中央存储库。有人认为数据库应该对应用程序无关并以数据为中心(PostgreSQL),而另一些人则认为数据库应该以应用程序为中心(MySQL)。总体来说,需要理解它们比扁平化电子表格或数据框更加复杂。
通常,RDMS有两种结构类型:
to_sql()
。请记住,pandas的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')
每个连接到中央数据库的应用程序/机器只需要刷新它们的实例,当前数据就可以实时提供给它们的最终使用需求。虽然,在多用户环境中,如果另一个用户在编辑模式下拥有表记录,而您的脚本尝试更新它,则表锁定状态可能会成为一个问题。但是,在这里,事务可以帮助解决这个问题。