This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!flask/bin/python | |
import sys | |
from time import time | |
from app import database | |
from app.modules.user_manager import models as user | |
# Query once, filter each time | |
t = time() | |
q = database.session.query(user.User) | |
for i in range(10000): | |
# r = database.session.query(user.User).filter( | |
# user.User.username == 'brandonm').all() | |
r = q.filter(user.User.username == 'brandonm').all() | |
for result in r: | |
assert result.display == 'Brandon Morris' | |
print('New query each time: {:.2f}'.format(time() - t)) | |
# Query every time | |
t = time() | |
q = database.session.query(user.User) | |
for i in range(10000): | |
# r = database.session.query(user.User).filter( | |
# user.User.username == 'brandonm').all() | |
r = q.filter(user.User.username == 'brandonm').all() | |
for result in r: | |
assert result.display == 'Brandon Morris' | |
print('New filter each time: {:.2f}'.format(time() - t)) | |
# Query once, dict lookup | |
t = time() | |
all = database.session.query(user.User).all() | |
name_to_display = dict() | |
for user in all: | |
name_to_display[user.username] = user.display | |
for i in range(10000): | |
assert name_to_display['brandonm'] == 'Brandon Morris' | |
print('Cache lookup: {:.4f}'.format(time() - t)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Running this on my machine, I got the following results:
So it seems SQLAlchemy doesn't do any kind of caching for its queries