如何从 Linux VM 上的 Django 应用程序连接到 Azure SQL 数据库

How to connect to Azure SQL database from Django app on Linux VM

我搜索了有关使用 SQL Azure 数据库和托管在 Linux VM 上的 Django 应用程序的教程或完整说明。

我像这样更改了 settings.py 的数据库部分

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'azure_database_name',
        'USER': 'user@server_name_like_wjrnvlwjrng3',
        'PASSWORD': 'my_pass',
        'HOST': 'server_name_like_wjrnvlwjrng3.database.windows.net',
        'PORT': '1433',
        'OPTIONS': {
            'driver': 'FreeTDS',
            'TDS_Version': '7.1',
        }
    }
}

我追加

[MyDb]
    host = server_name_like_wjrnvlwjrng3.database.windows.net
    port = 1433
    tds version = 7.1

到/etc/freetds/freetds.conf

并更改了/etc/odbc.ini

[MyDb]
Description     = ololo lalala text
Driver          = FreeTDS
Servername      = server_name_like_wjrnvlwjrng3
Database        = azure_database_name
UID             = user@server_name_like_wjrnvlwjrng3
PWD             = my_pass
Port            = 1433
Charset         = UTF-8

之后我尝试调用 python manage.py migrate 并收到错误消息

django.db.utils.Error: ('001', '[001] [nxDC[reD]SLSre]nbet onc odt ore (0) (SQLDriverConnect)')

请帮帮我。

这是一种在 Linux 机器上使用 pymssql 和 FreeTDS 连接到 Python 中的 SQL Azure 数据库和 Django 的方法。 以下是您的操作方法: 在终端中,导航到 manage.py 所在的目录。 安装以下软件包:

sudo apt-get update  
sudo apt-get install freetds-dev freetds-bin
sudo apt-get install python-dev python-pip
sudo pip pymssql

您实际上是在您的环境中安装 FreeTDS 和 Pymssql。这将允许您连接到 SQL 数据库。您正在尝试做的是在 linux 机器上使用 Django 本机使用 pyodbc 来访问您的 SQL Azure 数据库,这目前是不可能的。

安装包后,您可以使用以下 python 代码创建 table、insert/update 行和 select 所有内容。对于 simplicity/testing,您可以将代码放在 views.py 脚本中。确保你创建了一个数据库,你想在其中创建你的 table,否则它将 select 默认

# Connect
import pymssql
conn = pymssql.connect(server='test.database.windows.net', user='newuser@test', password='yourpassword', database='sampledatabase')
cursor = conn.cursor()

#Create
cursor.execute("""
IF OBJECT_ID('votes', 'U') IS NOT NULL
    DROP TABLE votes
CREATE TABLE votes (
    name VARCHAR(100),
    value INT NOT NULL,
    PRIMARY KEY(name)
)
""")

#Insert
cursor.executemany(
    "INSERT INTO votes VALUES (%s, %d)",
    [('NodeJS', '0'),
     ('Python', '0'),
     ('C#', '0')])
# you must call commit() to persist your data if you don't set autocommit to True
conn.commit()

        #Select
 cursor.execute('SELECT * FROM votes')
     result = ""
     row = cursor.fetchone()
     while row:
         result += str(row[0]) + str(" : ") + str(row[1]) + str(" votes")
         result += str("\n")
         row = cursor.fetchone()
     print result

我们刚刚创建了一个名为 votes 的 table,在其中插入值并使用 select 语句打印所有内容。希望这可以帮助。如果您仍然需要帮助,请随时与我们联系。我有一个演练指南,可能会在需要时为您提供帮助。