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

8 python sql sqlalchemy dataframe pandas

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

我知道这是一个基于意见的问题,但我认为了解差异很重要,特别是导入数据和操作数据非常耗时。通过确定要使用的正确方法,可以节省大量时间,从而在 StackOverflow 上节省有关特定主题的许多问题。

更准确地说,当 pandas 就足够了时,为什么还要使用 SQL Alchemy 来操作数据。是否有 SQL Alchemy 击败 pandas 的具体案例。

更新

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

Max*_*axU 5

以下是您想要同时使用 Pandas 和 SQL Alchemy 时的示例:

想象一下,您需要从 DataFrame(有 100.000 行)更新数据库表(假设它有 100.000.000 行并且无法放入内存)。即,您的 DF 中有一列ID,并且您希望使用 DF 中的数据更新数据库表中这些 ID 的列。在这种情况下,您可以将 DF 作为表转储到数据库中,并UPDATE ...使用 SQL Alchemy 执行语句。

这是一个小演示:

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)
Run Code Online (Sandbox Code Playgroud)