SQLalchemy:一直创建引擎会影响性能



我找到了一些遗留代码,每当发送查询时,它都会从当前应用中获取当前配置,并从URI创建引擎,然后进行会话。例如,如果一个API像9个查询一样发送,则它将创建引擎9次并进行会话,然后关闭会话。我想知道它是否会影响性能,因为使引擎多次看起来效率低下,因为此应用程序仅使用两个MySQL数据库(Master和Slave(。

您可以轻松地使用内置模块内置的timeit来测试这样的事物。例如:

C:test> python -m timeit -u msec -s "from sqlalchemy import create_engine" "engine=create_engine('sqlite:///');engine.execute('SELECT 1')"

返回:

200 loops, best of 5: 1.21 msec per loop

和:

C:test> python -m timeit -u msec -s "from sqlalchemy import create_engine;engine=create_engine('sqlite:///')" "engine.execute('SELECT 1')"

返回:

5000 loops, best of 5: 0.0371 msec per loop

请注意,两者之间的差异在第二个语句中,engine=create_engine('sqlite:\')语句移至设置代码。

因此,从该测试中,从全球定义的发动机执行SQL语句的速度比为发出的每个语句构建引擎快33倍。

最新更新