如何从Linux VM上的Django应用程序连接到Azure SQL数据库 [英] How to connect to Azure SQL database from Django app on Linux VM
问题描述
我搜索了关于在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
/ pre>
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()
打印结果
我们刚刚创建了一个名为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 errordjango.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屋!