7

私は通常、Django でのデータベースのニーズに Postgres を使用していますが、最近、Windows 環境で MSSQL を使用する会社に入社しました。簡単に言えば、settings.py でデータベースのプロパティを書き直す必要がありました。残念ながら、Pyodbc を使用して SQL Server に接続する方法がわからず、Python 3.x を実行しているため、Django-Pyodbc を使用できません。実行しようとすると、「データソース名が見つからず、デフォルトのドライバーが指定されていません (0) (SQLDriverConnect)')」というメッセージが表示されます。

これが私の現在のdb構成です。私はおそらく何か間違ったことをしていますが、ほとんどの Django+Sql Server の結果は FreeTDS または Django-Pyodbc (どちらもオプションではない) を使用しているため、リソースを見つけるのは非常に困難です。

'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'db_name_on_server',
    'USER': 'my_acct',
    'PASSWORD': 'nope',
    'HOST': 'x.x.x.x',
    'PORT': '1433',
    'OPTIONS': {  # Options are not edited
        'driver': 'SQL Server',  # What it displays as on odbc admin   
        'dsn': 'System DSN',  # What it displays as on odbc admin
        'use_legacy_datetime': False
    }
4

3 に答える 3

2

私は次のスタックで最高の幸運に恵まれました。私たちは Python 3 専門店です。

  • フリーTDS 0.95
  • pyodbc 3.0.10
  • django-pyodbc-azure 1.8.3 (Django 1.8 以降を想定)

odbc.iniodbcinst.ini、およびすべてが四角になっていると仮定すると、freetds.confこれが私にとってうまくいく設定の例です。これらのいくつかは、SQL Server 2008 以降を使用しているかどうかによって異なります。

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': 'yourserver.com',
        'PORT': '1433',
        'NAME': 'your_db',
        'USER': 'your_user',
        'PASSWORD': 'your_pw',
        'AUTOCOMMIT': True,
        'OPTIONS': {
            'driver': 'FreeTDS',
            'unicode_results': True,
            'host_is_server': True,
            'extra_params': 'tds_version=7.2;',
        },
    },
}

SQL Server 2005 以前を実行している場合も含める必要があり'use_legacy_datetime': True,ます。そうしないと、新しい SQL Server 2008 以降の日付フィールドが使用されます。古いドライバーを使用している場合も、自動的に true に設定されます。幸運を!

于 2015-09-24T22:57:08.657 に答える