如何在python脚本上使用azure cli命令导出数据库
我使用Azure CLI将资源组中的数据库导出到blobstorage,因此我希望在python脚本上使用相同的命令 例如,我在Azure CLI中使用以下命令导出我的资源组中的数据库:如何在python脚本上使用azure cli命令导出数据库,python,azure,azure-sql-database,python-3.7,azure-cli,Python,Azure,Azure Sql Database,Python 3.7,Azure Cli,我使用Azure CLI将资源组中的数据库导出到blobstorage,因此我希望在python脚本上使用相同的命令 例如,我在Azure CLI中使用以下命令导出我的资源组中的数据库: az sql db export -s (sql server) -n (database) -g (group) -p (password) -u login --storage-key " key " --storage-key-type --storage-uri (url blob) 如何
az sql db export -s (sql server) -n (database) -g (group) -p (password)
-u login --storage-key " key "
--storage-key-type
--storage-uri (url blob)
如何使用Python脚本实现这一点?您可以使用Python中的REST API将Azure SQL数据库导出为bacpac 这是一个示例请求
POST https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/sqlcrudtest-4799/providers/Microsoft.Sql/servers/sqlcrudtest-5961/databases/testdb/export?api-version=2014-04-01
请求主体
{
"storageKeyType": "SharedAccessKey",
"storageKey": "?sr=b&sp=rw&se=2018-01-01T00%3A00%3A00Z&sig=sdfsdfklsdjflSLIFJLSIEJFLKSDJFDd/%2wdfskdjf3%3D&sv=2015-07-08",
"storageUri": "https://test.blob.core.windows.net/bacpacs/testbacpac.bacpac",
"administratorLogin": "dummyLogin",
"administratorLoginPassword": "Un53cuRE!",
"authenticationType": "SQL"
}
样本响应
{
"id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/sqlcrudtest-4799/providers/Microsoft.Sql/servers/sqlcrudtest-5961/importExportOperationResult/f01d7bfe-7162-44e7-9350-f1c85ce83e4c",
"name": "f01d7bfe-7162-44e7-9350-f1c85ce83e4c",
"type": "Microsoft.Sql/servers/importExportOperationResults",
"properties": {
"requestId": "f01d7bfe-7162-44e7-9350-f1c85ce83e4c",
"requestType": "Export",
"queuedTime": "3/1/2017 12:14:25 AM",
"lastModifiedTime": "3/1/2017 12:16:33 AM",
"blobUri": "https://test.blob.core.windows.net/bacpacs/test.bacpac",
"serverName": "test",
"databaseName": "testdb",
"status": "Completed",
"errorMessage": null
}
}
确保使用pip安装azure管理sql==0.16.0包 在下面的代码段中调整参数,您就可以开始了
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.sql import SqlManagementClient
from azure.mgmt.sql.models import StorageKeyType, AuthenticationType
from msrestazure.azure_exceptions import CloudError
TENANT_ID = '<your_tennant_id>'
CLIENT = '<your_client_id>'
KEY = '<your_client_key>'
SUBSCRIPTION_ID = '<your_subscription_id>'
credentials = ServicePrincipalCredentials(
client_id=CLIENT,
secret=KEY,
tenant=TENANT_ID
)
sql_client = SqlManagementClient(credentials, SUBSCRIPTION_ID)
kwargs = dict()
kwargs['storage_key_type'] = 'StorageAccessKey'
kwargs['storage_key'] = '<your_storage_account_key'
kwargs['storage_uri'] = 'https://<name>.blob.core.windows.net/<container>/<name>.bacpac'
kwargs['administrator_login'] = '<admin_name>'
kwargs['administrator_login_password'] = '<admin_password>'
kwargs['authentication_type'] = 'SQL'
try:
poller = sql_client.databases.export(
database_name='<your_db_name>',
server_name='<your_server_name>',
resource_group_name='<your_rg_name>',
storage_key_type='StorageAccessKey',
storage_key='<your_storage_account_key',
parameters=kwargs)
print(poller.result())
except CloudError as err:
print(err.error)
print(err.message)
来自azure.common.credentials导入服务PrincipalCredentials
从azure.mgmt.sql导入SqlManagementClient
从azure.mgmt.sql.models导入StorageKeyType、AuthenticationType
从msrestazure.azure\u异常导入CloudError
租户ID=“”
客户端=“”
键=“”
订阅\u ID=“”
凭证=服务原则凭证(
client_id=client,
秘密=钥匙,
租户=租户ID
)
sql\u client=SqlManagementClient(凭据、订阅\u ID)
kwargs=dict()
kwargs['storage\u key\u type']=“StorageAccessKey”
kwargs['storage_key']='