[django-pyodbc-azure] 使用 Django 来连接 SQLServer 数据库
可以正常地使用SQLServer作为数据库。
Django 默认支持的数据库服务器有 Postgres、MySQL 和 Oracle 这三种。一开始我一直在寻找连接到 SQL Server 的方法,但是在谷歌上搜索「Django SQLServer」时,只能找到一些旧的信息(例如 django-mssql 这样已经停止更新的旧包),而且在 Teratai 上也有回答说「做不到,只能放弃」之类的意见。因此,我一直以为没有办法连接到 SQL Server。然而,最近我才知道现在仍然有一个持续更新的连接包存在。
关于django-pyodbc-azure
这是一个用于连接Django和SQLServer的库。
Github :https://github.com/michiya/django-pyodbc-azure
使用由Microsoft官方支持的Python用SQL Server连接库”pyodbc”通过ODBC进行连接。
Python SQL驱动程序 – pyodbc:
https://docs.microsoft.com/ja-jp/sql/connect/python/pyodbc/python-sql-driver-pyodbc?view=sql-server-2017
Python SQL驱动程序 – pyodbc:https://docs.microsoft.com/ja-jp/sql/connect/python/pyodbc/python-sql-driver-pyodbc?view=sql-server-2017
尽管不是Django或Microsoft的官方支持,但根据atmarkit的文章来看,这似乎是一种准官方的待遇。过去,这个包也被用于介绍在Microsoft发布的有关将Django部署到Azure的文章中(目前已被删除,并被替换为有关flask的文章)。
以下是存放在GitHub上的文章。
- Github : Python Tools 2.2 for Visual Studio を使用した Azure 上の Django と SQL Database
你在Qiita上也有发布过文章呢。
- Azure App Serviceにpipを使用できないパッケージをインストールする
因为在Github上有很多星标,所以我想要相信并尝试继续开发。
如何使用django-pyodbc-azure
在使用pip安装django-pyodbc-azure之后,需要编辑settings.py文件中的DATABASE设置。
settings.py示例
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'mydb',
'USER': 'user@myserver',
'PASSWORD': 'password',
'HOST': 'myserver.database.windows.net',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
驱动程序默认使用”ODBC Driver 13 for SQL Server”,如果没有安装,将进行安装。即使由于某些原因无法安装,您也可以通过指定过去版本的字符串来进行连接。
请参考:ODBC下载请点击这里。
如果是Azure主机,则HOST为server_name.database.windows.net;如果是本地实例,则HOST为server\instance。例如,要连接本地计算机的Express Edition,则为localhost\SQLEXPRESS。
要连接到Express Edition,需要进行一些设置。
参考:SQL Server Express 进行远程连接。
我先在本地机器和Azure的数据库实例上进行了连接和测试。迁移过程中没有出现任何错误,一切都正常运行。
以下的文章整理了Django字段和SQL Server列类型之间的对应关系,请参考该条目。
- Django モデルフィールド:データベースフィールド 型対応表