【问题标题】:How to connect to Azure SQL database from Django app on Linux VM如何从 Linux VM 上的 Django 应用程序连接到 Azure SQL 数据库
【发布时间】:2015-06-16 18:30:05
【问题描述】:

我搜索了有关将 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)')

请帮帮我。

【问题讨论】:

  • SQL Azure 不受 Django 官方支持。有一个基于 ADO 的 MS SQL 适配器,但只能在 Windows 上运行。
  • @KlausD。哦...谢谢,新问题 =) 是否存在使用 Azure 数据库而不是在 VM 上部署 MySQL(或其他)的方法?
  • 一般来说,您会对官方支持的数据库之一感到非常满意。具有第三方支持的数据库可以让您开心(或不开心),而其他一切都不起作用。详情docs.djangoproject.com/en/1.8/ref/databases

标签: python sql-server django azure-sql-database freetds


【解决方案1】:

这是一种在 Linux 计算机上使用 pymssql 和 FreeTDS 在 Python 和 Django 中连接到 SQL Azure 数据库的方法。 您可以这样做: 在终端中,导航到 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 机器上使用 pyodbc 本机与 Django 来访问您的 SQL Azure 数据库,这目前是不可能的。

安装完软件包后,您可以使用以下 python 代码创建表、插入/更新行并选择所有内容。为了简单/测试,您可以将代码放在您的 views.py 脚本中。确保您已经创建了一个要在其中创建表的数据库,否则它将选择默认值

# 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 的表,在其中插入值并使用 select 语句打印所有内容。希望这可以帮助。如果您仍然需要帮助,请随时与我们联系。我有一个演练指南,如果需要,可能会对您有所帮助。

【讨论】:

  • 谢谢,我考虑在同一个虚拟机上使用本地 MySQL 数据库,现在将其配置为主-主复制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2021-11-22
相关资源
最近更新 更多