我找到了一些遗留代码,每当发送查询时,它都会从当前应用中获取当前配置,并从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倍。