Я использую sqlalchemy
и python3
для запроса базы данных на Microsoft SQL Server
.
Поскольку у меня нет доступа к SQL Server Management Studio
, я прибегаю к использованию SHOWPLAN
опций в своих запросах. Я нашел это в ответе здесь: Как получить план выполнения запроса ?
Проблема в том, что результат использования STATISTICS XML ON
не удобен для человека. Обычно я использую sqlalchemy
для извлечения данных из pandas
фреймов данных, поэтому, пожалуйста, простите мое невежество, если я упускаю что-то очевидное, чтобы интерпретировать это более дружелюбно.
Пожалуйста, найдите мой код python3 ниже:
from sqlalchemy import create_engine
import os
database_credentials = config.settings['database_credentials']
# Retrieve database credentials from config
db_name = os.environ.get(database_credentials['db_name'])
db_host = os.environ.get(database_credentials['db_host'])
db_port = os.environ.get(database_credentials['db_port'])
db_id = os.environ.get(database_credentials['db_id'])
db_pwd = os.environ.get(database_credentials['db_pwd'])
# Concatenate strings to create database url
db_engine = create_engine('mssql+pymssql://' + db_id + ':' + db_pwd + '@' + db_host + ':' + db_port + '/' + db_name)
# Connect to database
db_conn = db_engine.connect()
# Example query with SHOW Plan options
query = 'SET STATISTICS XML ON\n SELECT TOP 5 * FROM Table'
# Execute the query
result = db_engine.execute(query)
Есть ли способ отформатировать result
во что-то удобочитаемое для понимания плана запроса?
Спасибо за вашу помощь
xml
как файл с расширением".sqlplan"
в локальной папке, а затем открыть его оттуда. Будет ли это возможно? - person Rigerta   schedule 30.07.2018fetchall()
для переменнойresult
он находится в списке внутри python. У меня есть несколько вопросов по вашему предложению, как мне сохранить переменнуюresult
как.sqlplan
в python? Это класс'sqlalchemy.engine.result.ResultProxy'
, какой программой вы бы открыли этот файл? ЭтоSQL Server Management Studio
? Это программа только для Windows, я бы предпочел что-то программное и на питоне. Я также использую macOS. - person ZeroStack   schedule 30.07.2018XML
, которая возвращается из запроса, вы можете проанализировать ее, используяET.fromstring
, а затем сохраните в файл после этот вопрос. - person SuperShoot   schedule 30.07.2018