【发布时间】:2020-12-07 04:23:43
【问题描述】:
出于纯粹的好奇,有谁知道为什么在连接到 PostgreSQL 数据库时,与 psycopg2 中完全相同的设置在 SQLAlchemy 中的执行时间会有所不同?
据我所知,SQLAlchemy 的初始化时间更长,但我不知道为什么。这有关系吗?(我被推荐使用 psycopg2 的 SQLAlchemy,但速度较慢)。它需要大约 3 倍的时间。
start = time.time()
...: engine_str = 'enginestr'
...: try:
...: engine = create_engine(engine_str)
...: conn = engine.connect()
...: except sqlalchemy.exc.OperationalError:
...: raise ConnectionError("Check VPN connection")
...: ms = Table('measurement_stat',metadata,autoload = True,
...: autoload_with = engine)
...: times = cf.display_modemap_start_times(ms, 10, conn)
...: stop = time.time()
...: print(stop-start)
3.546764850616455
In [25]: start = time.time()
...: params = {'database': 'dbname',
...: 'user': 'uname',
...: 'password': 'passwd',
...: 'host': 'hostname',
...: 'port': 30000
...: }
...: try:
...: conn = pg2.connect(**params, connect_timeout = 5) #connects to postgres
...: cur = conn.cursor()
...: except pg2.OperationalError:
...: print("CANNOT CONNECT TO DATABASE.CHECK VPN CONNECTION")
...: modemap_start_sql = F"SELECT timestamp FROM measurement_stat WHERE sensor_name = 'modemap_measurement_status' AND value_cal = 'start_measurement' ORDER BY timestamp DESC LIMIT {10};"
...: cur.execute(modemap_start_sql)
...: start_times = pd.DataFrame(cur.fetchall())
...: start_times.columns = ['modemap_start_time']
...: stop = time.time()
...: print(stop-start)
1.190742015838623
【问题讨论】:
标签: python sql postgresql sqlalchemy psycopg2