Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Linux虚拟机上的Django应用程序连接到Azure SQL数据库_Python_Sql Server_Django_Azure Sql Database_Freetds - Fatal编程技术网

Python 如何从Linux虚拟机上的Django应用程序连接到Azure SQL数据库

Python 如何从Linux虚拟机上的Django应用程序连接到Azure SQL数据库,python,sql-server,django,azure-sql-database,freetds,Python,Sql Server,Django,Azure Sql Database,Freetds,我搜索了关于将SQLAzure数据库与Django应用程序(托管在Linux虚拟机上)结合使用的教程或完整解释 我更改了settings.py的database部分,如下所示 DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME': 'azure_database_name', 'USER': 'user@server_name_like_wjrnvlwjrng3',

我搜索了关于将SQLAzure数据库与Django应用程序(托管在Linux虚拟机上)结合使用的教程或完整解释

我更改了settings.py的database部分,如下所示

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和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机器上与Django一起使用pyodbc本机访问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

我们刚刚创建了一个名为vots的表,在其中插入值,并使用select语句打印所有内容。希望这有帮助。如果你仍然需要帮助,请毫不犹豫地伸出援手。我有一个穿行指南,如果需要的话可能会对您有所帮助。

Django不正式支持SQL Azure。MS SQL有一个基于ADO的适配器,但它仅在Windows上运行。哦谢谢,新问题=)是否存在使用Azure数据库而不是在VM上部署MySQL(或其他)的方法?一般来说,您会非常满意其中一个官方支持的数据库。有第三方支持的DB可以让您开心(或不开心),而其他一切都不起作用。详细信息:谢谢,我考虑了同一个VM上的本地MySQL db,现在将其配置为主复制