Skip to content

Instantly share code, notes, and snippets.

@pplonski
Created March 4, 2019 11:08
Show Gist options
  • Save pplonski/5671d1ff0335db0479e2352d8a556774 to your computer and use it in GitHub Desktop.
Save pplonski/5671d1ff0335db0479e2352d8a556774 to your computer and use it in GitHub Desktop.
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
import psycopg2
import time
host = "host-address-here"
user = "db-user-here"
password = "db-password"
db = "db-name"
alchemy_engine = "postgresql://{}:{}@{}:5432/{}".format(user, password, host, db)
pg_engine = "user='{}' password='{}' host='{}' dbname='{}'".format(user, password, host, db)
sql_queries = ["select * from projects_project",
"select count(*) from projects_project"]
for sql_query in sql_queries:
print(sql_query)
for lib_type in ["alchemy", "pg"]:
t = []
for i in range(10):
start = time.time()
if lib_type == "alchemy":
engine = create_engine(alchemy_engine)
df = pd.read_sql_query(sql_query, engine)
elif lib_type == "pg":
conn = psycopg2.connect(pg_engine)
cur = conn.cursor()
cur.execute(sql_query)
df = pd.DataFrame(cur.fetchall())
end = time.time()
t += [end-start]
print(lib_type, ",", sql_query, ",", np.mean(t))
@pplonski
Copy link
Author

pplonski commented Mar 4, 2019

The results:

select * from projects_project
alchemy , select * from projects_project , 2.5992019891738893
pg , select * from projects_project , 1.1509313106536865
select count(*) from projects_project
alchemy , select count(*) from projects_project , 2.2600314140319826
pg , select count(*) from projects_project , 0.9214831829071045

The projects_project has ~500 rows in the table.

The blog post: https://pplonski.github.io/sqlalchemy-vs-psycopg2/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment