python - PostgreSQL Sqlalchemy 提交需要很多时间

标签 python postgresql sqlalchemy

当我尝试将更改提交到表中时,它会花费很多时间(每 1000 行大约需要 300 秒)。

模型类:

class Quotes(base):
    __tablename__ = 'quotes'

    id = Column(INTEGER, primary_key=True, autoincrement=True, index=True)
    ticker = Column(TEXT)
    data = Column(ARRAY(FLOAT))


    def create():
        Session = sessionmaker(db)
        session = Session()
        return session


    def add(session, ticker=None, data=None):
        new_row = Quotes(ticker=ticker, data=data)
        session.add(new_row)

    def commit(session):
        t0 = time.time()
        session.commit()
        print("SQLAlchemy ORM commit(): Total time " + str(time.time() - t0) + " secs")

代码如下:

        for index in range(len(quotes['timestamp'])):
        temp = [
            int(quotes['timestamp'][index]), quotes['open'][index],
            quotes['high'][index], quotes['low'][index],
            quotes['close'][index]
        ]
        Quotes.add(session, ticker, temp)
        counter += 1

        if counter % 1000 == 0:
            Quotes.commit(session)

我有大约 10 万行。 一开始我创建了一个 session ,然后在 for 循环的每次迭代中将新行添加到 session 中。 我每 1000 行调用 .commit() 方法,大约需要 300 秒。 对我来说似乎太慢了。可以吗,还是有另一种(正确的)方法可以将如此大的数据集插入数据库。

最佳答案

要提高性能,您可以使用 bulk_save_method,它看起来最快。

您可以查看性能 http://docs.sqlalchemy.org/en/latest/faq/performance.html#i-m-inserting-400-000-rows-with-the-orm-and-it-s-really-slow

关于python - PostgreSQL Sqlalchemy 提交需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51821428/

相关文章:

node.js - AWS RDS/EC2 : TimeoutError: Knex: Timeout acquiring a connection. 池可能已满

python - sqlalchemy session 可以执行的查询的大小是否有限制?

python - 我想在Python中将字符串列表(温度值: [ '23.14C' , '19.91C'] ['54.04F', '32.64F'])转换为 float

python - Django-RQ:如何调用函数?

c++ - 在 C++ 中嵌入 Python - 从 C++ 程序运行 Python

python - 我怎样才能在python中从数据库中绘制图表

python - 在 Django 数据库中插入外键

java - 有没有办法将 Postgres 的 UUID 生成与 Hibernate 的 IDENTITY ID 生成策略结合使用?

sql - CHECK值不在同一表的另一列中

python - SQLAlchemy - 从表定义中删除列