Захват вывода STATISTICS IO из ADODBAPI в Python
У меня есть следующий демонстрационный код, который прекрасно работает, но я хочу захватить вывод STATISTICS IO. Я не могу найти правильный способ уловить это.
import adodbapi
server = 'MYCOMPUTER\SQLEXPRESS'
database = 'mytest'
connString = 'Provider=SQLOLEDB;Server=' + server + ';Database=' + database + ';Integrated Security=SSPI;'
print(connString)
myConn = adodbapi.connect(connString)
cursor = myConn.cursor()
cursor.execute('SET STATISTICS IO ON; SELECT * FROM dbo.mytab')
results = cursor.fetchall()
for i in results:
print("First value: {} and Second value: {}".format(i[0],i[1]))
Я попытался этот код, который извлекается из другого ответа на стеке потока безуспешно:
import adodbapi
import win32com
import pythoncom
##from win32com.client import gencache
##gencache.EnsureModule('{2A75196C-D9EB-4129-B803-931327F72D5C}', 0, 2, 8)
defaultNamedOptArg=pythoncom.Empty
defaultNamedNotOptArg=pythoncom.Empty
defaultUnnamedArg=pythoncom.Empty
class events():
def OnInfoMessage(self, pError, adStatus, pConnection):
print('Info Message')
a = pError.QueryInterface(pythoncom.IID_IDispatch)
a = win32com.client.Dispatch(a)
print(a.Description)
print(a.Number)
print(a.Source)
#print 'B', adStatus
c = pConnection.QueryInterface(pythoncom.IID_IDispatch)
c = win32com.client.Dispatch(c)
print(c.Errors.Count)
print(c.Errors.Item(0).Description)
print(c.Errors.Clear())
print('c', adStatus)
if __name__ == '__main__':
server = 'mybox\SQLEXPRESS'
database = 'mytest'
username = 'testusr'
password = 'password'
connString = 'Provider=SQLOLEDB;Server=' + server + ';Database=' + database + ';Integrated Security=SSPI;'
print(connString)
myConn = win32com.client.DispatchWithEvents("ADODB.Connection", events)
myConn.ConnectionString = connString
myConn.Open()
con = adodbapi.cursor(myConn)
cursor = con.cursor()
cursor.execute('SET STATISTICS IO ON; SELECT * FROM dbo.mytab')
results = cursor.fetchall()
for i in results:
print("First value: {} and Second value: {}".format(i[0],i[1]))
Я получаю эту ошибку:
c: \ test3 \ MedusaPerfPractice> python Поставщик MedusaPerfGui.py =SQLOLEDB; Сервер =LINUSG51\SQLEXPRESS; База данных =mytest; Интегрированная безопасность =SSPI; Трассировка (последний вызов был последним): файл "MedusaPerfGui.py", строка 38, в файле myConn.Open() "C:\Users\russ960\AppData\Local\Temp\gen_py\3.5\B691E011-1797-432E-907A-4D8C69339129x0x6x1.py", строка 3358, в Open, UserID, пароль, параметры) Файл"C:\Program Files\Python35\lib\site-packages\win32com\client__init__. Py ", строка 459, в self ApplyTypes.oleobj.InvokeTypes (dispid, 0, wFlags, retType, argTypes, * args), pywintypes.com_error: (-2147352567, "Исключение произошло.", (0, "ADODB.Connection", "Операция была отменена пользователем.', 'C:\WINDOWS\HELP\ADO270.CHM', 1240661, -2146824576), нет)