如何从Linux VM上的Django应用程序连接到Azure SQL数据库 [英] How to connect to Azure SQL database from Django app on Linux VM

查看:149
本文介绍了如何从Linux VM上的Django应用程序连接到Azure SQL数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索了关于在Linux VM上托管的使用SQL Azure数据库的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。
'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 / fre etds.conf



并更改了/etc/odbc.ini

  [MyDb] 
描述= ololo lalala文本
驱动程序= FreeTDS
服务器名称= server_name_like_wjrnvlwjrng3
数据库= 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)')

请帮助我。

解决方案

这是一种连接方式在Python和Django的SQL Azure数据库中,使用Linux机器上的pymssql和FreeTDS。
这是怎么做的:
在终端中,导航到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本地访问您当前无法使用的SQL Azure数据库的pyodbc。



安装包后,您可以使用以下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')])
#你必须调用commit()来保存你的数据,如果你不要将autocommit设置为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(\\\

row = cursor.fetchone()
打印结果
/ pre>

我们刚刚创建了一个名为votes的表,在其中插入值,并使用select语句打印所有内容。希望这可以帮助。如果您仍然需要帮助,请不要犹豫。我有一个散步指南,可能会帮助你,如果需要。


I searched tutorials or full explanations about using SQL Azure Database with Django application, that hosted on Linux VM.

I changed database section of settings.py like this

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',
        }
    }
}

I append

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

to /etc/freetds/freetds.conf

And changed /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

And after that I tried to call python manage.py migrate and got an error

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

Please, help me with it.

解决方案

Here is a way to connect to your SQL Azure database in Python and Django using pymssql and FreeTDS on a Linux machine. Here is how you can do it : In the terminal, navigate to the directory where your manage.py is located. Install the following packages:

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

You are essentially installing FreeTDS and Pymssql in your environment. This will allow you to connect to your SQL Database. What you are trying to do is use pyodbc natively with Django on a linux machine to access your SQL Azure database which is not possible currently.

Once you have the packages are installed you can use the following python code to create a table, insert/update a row and select all the contents. For simplicity/testing you can place the code in your views.py script. Make sure you have a database created in which you would like to create your table, otherwise it will select the default

# 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

We just created a table called votes, inserted values inside it and used a select statement to print all the contents. Hope this helps. If you still need help, don’t hesitate to reach out. I have a walk through guide that might help you if need be.

这篇关于如何从Linux VM上的Django应用程序连接到Azure SQL数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆