我只是在尝试从Python3
脚本对某些数据库执行一些I / O操作时遇到麻烦。
[当我想Python3
到数据库时,我习惯性地使用connect来处理psycopg2
和psycopg2
。
我的数据通常存储为connections cursors和/或Pandas
的等效项Pandas
。
DataFrames
:我可以依靠其DataFrames
方法作为参数GeoPandas
,如文档中所述:
GeoPandas
GeoDataFrames
:我可以依靠其GeoDataFrames
方法作为参数Pandas
,如文档中所述:
Pandas
.read_sql()
:我可以依赖.read_sql()
方法,该方法将con
作为参数,如文档中所述:
con : SQLAlchemy connectable (engine/connection) or database str URI
or DBAPI2 connection (fallback mode)'
Using SQLAlchemy makes it possible to use any DB supported by that
library. If a DBAPI2 object, only sqlite3 is supported. The user is responsible
for engine disposal and connection closure for the SQLAlchemy connectable. See
`here <https://docs.sqlalchemy.org/en/13/core/connections.html>`_
GeoPandas
:我可以依赖GeoPandas
方法(直接依赖于.read_postigs()
.read_postigs()
),该方法将con
作为参数,如文档中所述:
con : DB connection object or SQLAlchemy engine
Active connection to the database to query.
[从这里,我很容易理解Pandas
是基于Pandas
构建的,特别是为其.to_sql()
对象创建的,这是一个可以处理地理数据的特殊.to_sql()
。
但是我想知道为什么con
能够直接将con : sqlalchemy.engine.Engine or sqlite3.Connection
Using SQLAlchemy makes it possible to use any DB supported by that
library. Legacy support is provided for sqlite3.Connection objects. The user
is responsible for engine disposal and connection closure for the SQLAlchemy
connectable See `here <https://docs.sqlalchemy.org/en/13/core/connections.html>`_
连接作为参数,而不能将GeoPandas
作为参数,是否为后者计划了呢?
为什么在处理[[write数据时,为什么不这样?我希望(可能还有许多其他人[[1,2)直接给他们一个GeoPandas
.to_sql()
参数,而不是依靠Pandas
.to_sql()
。因为这个工具真的很棒,所以它使我可以使用两个不同的框架连接到数据库,从而处理两个不同的连接字符串(我个人更喜欢.to_sql()
处理字典中的参数扩展以构建连接字符串的方式。例如con
与con : sqlalchemy.engine.Engine or sqlite3.Connection
Using SQLAlchemy makes it possible to use any DB supported by that
library. Legacy support is provided for sqlite3.Connection objects. The user
is responsible for engine disposal and connection closure for the SQLAlchemy
connectable See `here <https://docs.sqlalchemy.org/en/13/core/connections.html>`_
注入,例如此处所述:GeoPandas
)。
GeoPandas
创建我的连接字符串:Pandas
然后我发现这种方式更好,也更pythonic:
Pandas
我最终将其替换为这个,以便可以互换地使用它来构建GeoDataFrame
GeoDataFrame
或DataFrame
引擎:
DataFrame
a)
GeoPandas
GeoPandas
现在通过:psycopg2
b)
并通过以下方式初始化psycopg2
Pandas
:
Pandas
(或带有任何风味的psycopg2
)
这里有详细记录:psycopg2
和这里:connections[1]
SQLAlchemy
[2]SQLAlchemy