用Python将MySQL查询结果复制到tempfile

2024-03-29 09:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我对SQL世界有点陌生,但我遵循了一个名为Optimizing pandas.read_sql for Postgres的教程。问题是,我正在处理一个大数据集,类似于教程中的示例,我需要一种更快的方法来执行查询并将其转换为数据帧。在那里,他们使用这个功能:

def read_sql_tmpfile(query, db_engine):
    with tempfile.TemporaryFile() as tmpfile:
        copy_sql = "COPY ({query}) TO STDOUT WITH CSV {head}".format(
           query=query, head="HEADER"
        )
        conn = db_engine.raw_connection()
        cur = conn.cursor()
        cur.copy_expert(copy_sql, tmpfile)  # I want to replicate this
        tmpfile.seek(0)
        df = pandas.read_csv(tmpfile)
        return df

我试着复制它,就像这样:

def read_sql_tmpfile(query, connection):
    with tempfile.TemporaryFile() as tmpfile:
        copy_sql = "COPY ({query}) TO STDOUT WITH CSV {head}".format(
           query=query, head="HEADER"
        )

        cur = connection.cursor()
        cur.copy_expert(copy_sql, tmpfile)
        tmpfile.seek(0)
        df = pandas.read_csv(tmpfile)
        return df

问题是,cursor.copy_expert来自PostgreSQL的psycopg2库,我找不到用pymysql做同样的事情的方法。有什么办法吗?我该怎么办?谢谢


Tags: 数据方法pandasdfreadsql教程connection