PyODBC 需要大約 7 秒來建立與 Azure SQL Server 的連接,有沒有辦法將這種情況最小化?
import os
import sys
import logging, logging.handlers
import getopt
import pyodbc
from database import *
# set up logging
logging.getLogger().setLevel(logging.INFO)
console = logging.StreamHandler()
console.setFormatter(logging.Formatter('%(asctime)s %(name)-12s %(levelname)s %(message)s'))
console.setLevel(logging.INFO)
logging.getLogger().addHandler(console)
logger = logging.getLogger("testapp")
def connect():
return pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' server ';DATABASE=' database ';UID=' username ';PWD=' password)
def purgeStoreData(conn, div_id, purge_days, lookback_days, store_start, store_end):
store_list = get_store_list(conn, div_id, store_start, store_end)
cursor = conn.cursor()
for store in store_list:
logger.info("Store %s ...", store)
cursor.execute("some query")
if __name__ == "__main__":
try:
conn = connect()
purgeStoreData(conn, DIV_ID, PURGE_DAYS, LOOKBACK_DAYS, STORE_START, STORE_END)
logger.info("*** Completed succesfully")
finally:
conn.close()
有沒有辦法顯示網路延遲?
uj5u.com熱心網友回復:
您能否嘗試使用 SQL Server 的 ODBC 驅動程式 17 進行連接?您可能會發現這種方式更快。
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '{<password>}'
driver= '{ODBC Driver 17 for SQL Server}'
with pyodbc.connect('DRIVER=' driver ';SERVER=tcp:' server ';PORT=1433;DATABASE=' database ';UID=' username ';PWD=' password) as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT TOP 3 name, collation_name FROM sys.databases")
row = cursor.fetchone()
while row:
print (str(row[0]) " " str(row[1]))
row = cursor.fetchone()
適用于 Python 的 Microsoft 驅動程式在此處。
請將以下內容也添加到連接字串中:“Encrypt=yes;TrustServerCertificate=no;”。當客戶端第一次嘗試連接到 SQL Azure 時,它??會發送一個初始連接請求。將其視為“預預連接”請求。此時,客戶端不知道是否需要 SSL/加密,并等待來自 SQL Azure 的回答以確定整個會話(不僅僅是登錄序列,整個連接會話)是否確實需要 SSL。在回應上設定一個位來指示。然后客戶端庫斷開連接并使用此資訊重新連接。
當您將“加密連接”設定為“是”時,您可以避免“預預連接”并且連接速度更快。
此外,請確認您的互聯網連接延遲。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/406935.html
標籤:
上一篇:如何使用兩個鍵從JSON中讀取
