16
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[django-pyodbc-azure] DjangoのデータベースにSQLServerを使う

Last updated at Posted at 2018-05-18

SQLServerをデータベースに使うことは普通に可能

DjangoのデフォルトでサポートしているデータベースサーバはPostgres・MySQL・Oracleの3つです。Djangoを始めた当初SQL Serverに接続する方法を探していたのですが、Googleで「Django SQLServer」と検索しても古い情報しか出なかったり(django-mssql等、更新の止まった古いパッケージの情報は出る)、terataiにも「できないので諦めろ」という趣旨の回答があったりで、自分もできないもんだと思い込んでいましたが、最近になって現在も継続更新中の接続用パッケージの存在を知りました。

django-pyodbc-azure について

DjangoからSQLServer への接続用ライブラリです。
Github : https://github.com/michiya/django-pyodbc-azure

Microsoftが公式にサポートしているPython用SQLServer接続ライブラリ「pyodbc」を使ってODBC経由で接続します。

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で公開されていたAzureへのDjangoのデプロイ方法の記事にもこのパッケージが使われています(現在は削除されてflaskの記事に置き換えられている)。

Githubに残っている記事がこれです。

Qiitaにも利用している記事がありますね。

Githubのスター数も多いので、今後の継続開発を信じて使ってみたいと思います。

django-pyodbc-azure の使い方

pip install django-pyodbc-azureでインストール後、settings.pyDATABASEを編集します。

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

driverはデフォルトで「ODBC Driver 13 for SQL Server」を使うので、無ければインストールします。諸事情でインストールできない場合でも既にインストールされている過去バージョンを文字列で指定すれば接続することができます。

参考:ODBCダウンロードはこちら

HOSTはAzureならserver_name.database.windows.net、オンプレミスのインスタンスならserver\instanceです。例えばローカルマシンのExpress Editionに接続するならlocalhost\SQLEXPRESSとなります。

※ただしExpress Editionに接続するには色々と設定が必要です。
参考:SQL Server Express にリモート接続

とりあえずローカルマシンとAzureのDBインスタンスに接続して試してみました。マイグレーションでエラーも出ず、問題なく動いています。

DjangoのフィールドとSQLServerのカラム型との対応はこちらのエントリにまとめまています。

16
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?