• <bdo id='YgJgX'></bdo><ul id='YgJgX'></ul>

      <tfoot id='YgJgX'></tfoot>
      <legend id='YgJgX'><style id='YgJgX'><dir id='YgJgX'><q id='YgJgX'></q></dir></style></legend>

        <i id='YgJgX'><tr id='YgJgX'><dt id='YgJgX'><q id='YgJgX'><span id='YgJgX'><b id='YgJgX'><form id='YgJgX'><ins id='YgJgX'></ins><ul id='YgJgX'></ul><sub id='YgJgX'></sub></form><legend id='YgJgX'></legend><bdo id='YgJgX'><pre id='YgJgX'><center id='YgJgX'></center></pre></bdo></b><th id='YgJgX'></th></span></q></dt></tr></i><div id='YgJgX'><tfoot id='YgJgX'></tfoot><dl id='YgJgX'><fieldset id='YgJgX'></fieldset></dl></div>

        <small id='YgJgX'></small><noframes id='YgJgX'>

        使用MSI-Django的Azure SQL Server连接

        时间:2024-08-22

        • <bdo id='4bw8E'></bdo><ul id='4bw8E'></ul>
        • <small id='4bw8E'></small><noframes id='4bw8E'>

          1. <i id='4bw8E'><tr id='4bw8E'><dt id='4bw8E'><q id='4bw8E'><span id='4bw8E'><b id='4bw8E'><form id='4bw8E'><ins id='4bw8E'></ins><ul id='4bw8E'></ul><sub id='4bw8E'></sub></form><legend id='4bw8E'></legend><bdo id='4bw8E'><pre id='4bw8E'><center id='4bw8E'></center></pre></bdo></b><th id='4bw8E'></th></span></q></dt></tr></i><div id='4bw8E'><tfoot id='4bw8E'></tfoot><dl id='4bw8E'><fieldset id='4bw8E'></fieldset></dl></div>
            • <legend id='4bw8E'><style id='4bw8E'><dir id='4bw8E'><q id='4bw8E'></q></dir></style></legend>
                <tbody id='4bw8E'></tbody>
              <tfoot id='4bw8E'></tfoot>

                  本文介绍了使用MSI-Django的Azure SQL Server连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我已使用pyodbc中的AccessToken成功连接Azure SQL Server。这里我没有使用usernamepassword来连接数据库。相反,我使用attrs_before作为passtoken。我在这里自动生成令牌。

                  令牌生成:

                  identity_endpoint = os.environ["IDENTITY_ENDPOINT"]
                  identity_header = os.environ["IDENTITY_HEADER"]
                  
                  def get_bearer_token(resource_uri): #Automattically token will generate
                      token_auth_uri = f"{identity_endpoint}?resource={resource_uri}&api-version=2019-08-01"
                      head_msi = {'X-IDENTITY-HEADER': identity_header}
                  
                      resp = requests.get(token_auth_uri, headers=head_msi)
                      access_token = resp.json()['access_token']
                      return access_token
                  

                  Pyodbc连接:

                  accessToken = bytes(get_bearer_token("https://database.windows.net/"), 'utf-8');
                  exptoken = b"";
                  for i in accessToken:
                      exptoken += bytes({i});
                      exptoken += bytes(1);
                  tokenstruct = struct.pack("=i", len(exptoken)) + exptoken;
                  
                  conn = pyodbc.connect(
                        "Driver={ODBC Driver 17 for SQL Server};Server=yoursqlserver.database.windows.net,1433;Database=dbName",
                        attrs_before={1256: bytearray(tokenstruct)});
                  
                  现在的问题是如何在Django框架中使用它来连接DB?使用Azure令牌时,不能使用usernamepassword连接数据库。

                  请帮帮我。

                  推荐答案

                  使用此软件包处理此功能。

                  pip install azure-msi-mssql-django
                  

                  然后配置settings.py

                  DATABASES = {
                      'default': {
                          'ENGINE': 'sql_server.pyodbc',
                          'NAME': 'mydb',
                          'HOST': 'myserver.database.windows.net',
                          'PORT': '',
                          'IS_AZURE_BASED_TOKEN': True
                          'OPTIONS': {
                              'driver': 'ODBC Driver 13 for SQL Server',
                          },
                      },
                  }
                  

                  如果您使用的是本地SQL Server,请使用此配置。

                  DATABASES = {
                      'default': {
                          'ENGINE': 'sql_server.pyodbc',
                          'NAME': 'mydb',
                          'USER': 'user@myserver',
                          'PASSWORD': 'password',
                          'HOST': 'myserver.database.windows.net',
                          'PORT': '',
                          'IS_AZURE_BASED_TOKEN': False
                  
                          'OPTIONS': {
                              'driver': 'ODBC Driver 13 for SQL Server',
                          },
                      },
                  }
                  

                  更多详细信息:https://pypi.org/project/azure-msi-mssql-django/

                  这篇关于使用MSI-Django的Azure SQL Server连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:使用MALLOC_MMAP_THRESHOLD_和MALLOC_MMAP_MAX_减少内存碎片 下一篇:使用托管标识向SQL数据库验证Azure应用程序服务

                  相关文章

                • <i id='5HNXe'><tr id='5HNXe'><dt id='5HNXe'><q id='5HNXe'><span id='5HNXe'><b id='5HNXe'><form id='5HNXe'><ins id='5HNXe'></ins><ul id='5HNXe'></ul><sub id='5HNXe'></sub></form><legend id='5HNXe'></legend><bdo id='5HNXe'><pre id='5HNXe'><center id='5HNXe'></center></pre></bdo></b><th id='5HNXe'></th></span></q></dt></tr></i><div id='5HNXe'><tfoot id='5HNXe'></tfoot><dl id='5HNXe'><fieldset id='5HNXe'></fieldset></dl></div>

                      <legend id='5HNXe'><style id='5HNXe'><dir id='5HNXe'><q id='5HNXe'></q></dir></style></legend>

                        <bdo id='5HNXe'></bdo><ul id='5HNXe'></ul>
                    1. <small id='5HNXe'></small><noframes id='5HNXe'>

                    2. <tfoot id='5HNXe'></tfoot>