使用sqlite的pandas.read_sql非常慢

时间:2019-01-27 08:23:20

标签: python-3.x pandas sqlite

我正在将pandas.read_sql与sqlite数据库一起使用,并且运行速度非常慢。 我有一个具有800行和49列的表(数据类型仅为TEXT和REAL),它需要3分钟才能从数据库中获取数据到数据框。 DB-File和python脚本在同一台机器和同一文件系统上运行。

有什么方法可以加快pandas.read_sql吗?

这是代码片段:

        self.logger.info('{} - START read_sql: {}'.format(table))
        result = pd.read_sql("select * from {}".format(table), self.dbconn,
                           index_col=indexcolname)
        self.logger.info('{} - END read_sql: {}'.format(table))

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案: 问题是使用连接作为实例属性:self.dbconn 如果我总是启动一个新连接并在结束时将其关闭,性能绝对没有问题!

    conn = self.create_connection(self.db_file)

    self.logger.info('{} - START from sql: {}'.format(self.botid, table))
    Result = pd.read_sql("select * from {}".format(table), conn,
                           index_col=indexcolname)
    self.logger.info('{} - END from sql: {}'.format(self.botid, table))
    conn.close()