Python 何时使用SQLAlchemy以及何时使用Pandas进行数据操作

Python 何时使用SQLAlchemy以及何时使用Pandas进行数据操作,python,sql,pandas,dataframe,sqlalchemy,Python,Sql,Pandas,Dataframe,Sqlalchemy,我知道我们可以使用SQLAlchemy从数据库导入数据。但是,当您可以简单地导入数据并将其转换为数据帧,然后使用pandas和其他python库对其进行操作时,为什么要选择SQLAlchemy来操作数据呢 我知道这是一个基于观点的问题,但我认为了解其中的区别很重要,尤其是导入数据和操作数据相当耗时。通过确定正确的使用方法,可以节省大量时间,从而避免对特定主题提出许多问题 所以更准确地说,既然熊猫已经足够了,为什么还要使用SQL炼金术来处理数据呢。是否存在SQL炼金术击败熊猫的特定案例 更新 当我

我知道我们可以使用SQLAlchemy从数据库导入数据。但是,当您可以简单地导入数据并将其转换为数据帧,然后使用pandas和其他python库对其进行操作时,为什么要选择SQLAlchemy来操作数据呢

我知道这是一个基于观点的问题,但我认为了解其中的区别很重要,尤其是导入数据和操作数据相当耗时。通过确定正确的使用方法,可以节省大量时间,从而避免对特定主题提出许多问题

所以更准确地说,既然熊猫已经足够了,为什么还要使用SQL炼金术来处理数据呢。是否存在SQL炼金术击败熊猫的特定案例

更新
当我说操纵时,我指的是加法、减法、计数、计算百分比或平均值,即数学函数和其他数据操纵技术(分组、排序、追加、降序或升序…。

以下是一个同时使用Pandas和SQL Alchemy的示例:

假设您需要从DataFrame(有100.000行)更新一个DB表(假设它有100.000.000行,并且不适合内存)。也就是说,在DF中有一列
ID
,您希望在DB表中为使用DF数据的ID更新一列。在这种情况下,您可以将DF作为表转储到DB中,并使用SQL Alchemy执行
UPDATE…
语句

下面是一个小演示:

df.to_sql('tmp', conn, if_exists='replace')

sql = """
UPDATE table_name set last_seen = (SELECT t.last_seen
                                   FROM tmp t
                                   WHERE t.id = table_name.id)
WHERE EXISTS(
    SELECT *
    FROM tmp
    WHERE tmp.id = table_name.id
)
"""

cursor.execute(sql)

这个问题不太正确,因为熊猫在内部使用SQL炼金术…:-)@MaxU如果熊猫在内部使用SQL炼金术,那么除了连接到引擎和导入数据之外,SQL炼金术还有什么用途?我对SQL Alchemy数据操作的存在感到非常困惑,因为pandas在许多函数中已经足够了。您不使用SQL Alchemy来操作数据,而是抽象与数据库的通信以及关系模型和对象模型之间的映射。然后,您可以通过各种方式从数据库中查询数据。有很多程序不使用Pandas,但它们使用SQL Alchemy。。。因此,您的问题类似于“如果存在Bugatti/Lamborgini,为什么需要一个引擎”@Victor SQLAlchemy将数据库中的数据转换为Python对象,这就是为什么它被称为ORM(对象关系映射器)。然后在您的代码中,您只需担心如何处理Python对象,SQLAlchemy将自动序列化到数据库或从数据库序列化。