使用SQLAlchemy

时间:2017-12-27 08:30:02

标签: python sqlalchemy pyodbc

我想在使用SQLAlchemy向表中插入行时打开pyODBC驱动程序的fast_executemany选项。默认情况下,代码运行速度非常慢......有人可以建议怎么做吗?

编辑:

我正在使用pyODBC 4.0.21和SQLAlchemy 1.1.13,我正在使用的代码的简化示例如下所示。

import sqlalchemy as sa

def InsertIntoDB(self, tablename, colnames, data, create = False):
    """
    Inserts data into given db table
    Args:
    tablename - name of db table with dbname
    colnames - column names to insert to
    data - a list of tuples, a tuple per row
    """

    # reflect table into a sqlalchemy object
    meta = sa.MetaData(bind=self.engine)
    reflected_table = sa.Table(tablename, meta, autoload=True)

    # prepare an input object for sa.connection.execute
    execute_inp = []
    for i in data:
        execute_inp.append(dict(zip(colnames, i)))

    # Insert values
    self.connection.execute(reflected_table.insert(),execute_inp)

2 个答案:

答案 0 :(得分:1)

尝试使用pyodbc

crsr = cnxn.cursor()
crsr.fast_executemany = True

答案 1 :(得分:1)

从1.3版开始,SQLAlchemy直接支持fast_executemany,例如

engine = create_engine(connection_uri, fast_executemany=True)