当我尝试将更改提交到表中时,它会花费很多时间(每 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,它看起来最快。
关于python - PostgreSQL Sqlalchemy 提交需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51821428/