fast_executemany=SQLALCHEMY中Oracle的真正等价物

2024-04-20 01:57:06 发布

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

我正在使用SQLALCHEMY在Oracle数据库中执行sql脚本。过去,我在MSSQL/MYSQL相关的sql查询中使用了fast_ExecuteMy,速度非常快。我猜同样的方法不适用于Oracle

我的问题如下:

从sqlalchemy.engine导入创建引擎

DIALECT = 'oracle'
SQL_DRIVER = 'cx_oracle'
USERNAME = 'dbuser' #enter your username
PASSWORD = 'password'
HOST = 'hostname'
PORT = 1521
SERVICE = 'service' # db service name
ENGINE_PATH_WIN_AUTH = DIALECT + '+' + SQL_DRIVER + '://' + USERNAME + ':' + PASSWORD +'@' + HOST + ':' + str(PORT) + '/?service_name=' + SERVICE

使用下面的查询给我错误

engine = create_engine(ENGINE_PATH_WIN_AUTH, fast_executemany=True)

TypeError: Invalid argument(s) 'fast_executemany' sent to create_engine(), using configuration OracleDialect_cx_oracle/QueuePool/Engine.  Please check that the keyword arguments are appropriate for this combination of components.

如果我不使用fast\u executemany,我不会得到任何错误。但是,脚本的执行速度很慢

engine = create_engine(ENGINE_PATH_WIN_AUTH)    

sql_query = """SELECT col1, col2, col3
FROM Table
WHERE  date >= add_months(sysdate, -3)"""

df = pd.read_sql_query(sql_query, engine)

请告诉我是否有其他替代方法可以在Oracle中更快地执行sql查询


Tags: path脚本authsqlcreateservicequerywin