2012-11-15 20 views
9

別の開発者と私は、別のサーバーで従来のSQLサーバーデータベース(SQLEXPRESS)を使用してdjango(v1.4.2)プロジェクトを設定しています。これまでは、django-pyodbcを使用してlinuxとmacから、django-mssqlを使用してWindows 7を実行するラップトップからデータベースに接続できました。ノートパソコンでdjango-pyodbcを使用して、環境を同期させておきたい。ラップトップ上でWindowsでのDjango-pydobc SQLサーバー接続の問題

  • pyodbc(3.0.6)がインストールされ、非ジャンゴの.pyスクリプトで、私はzipファイルをダウンロードしてダウンロードしたジャンゴ・pyodbc 1.4
  • SQL文を接続し、実行することができます;私はそれを正しくインストールしたか分からない:
    • 私はファイルを解凍し、トップディレクトリでsetup.pyファイルを実行した。それは/ジャンゴ/ DB /バックエンド/ SQL_SERVER にPYTHONPATH環境変数ポインティングを作成し、このSQL_SERVERディレクトリに/ジャンゴ/ DB /バックエンド
    • をコピーし
  • /libに/ site-packagesディレクトリにSQL_SERVERディレクトリを置きます
    • 代わりに/ site-packages/sql_serverを指すはずですか?
  • が作成された接続オプションをテストするODBCデータソース(システムDSN)
  • はEditted settings.pyでデータベースエントリがほぼ正確にLinuxバージョンのようなものに努めています(詳細は下記)

だから、それは動作しません、と私は、次のエラーメッセージを取得し、次に何をすべきか見当がつかない:

('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53); [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)') 

IセットアップそうなどのDjangoのsettings.pyファイル:Linux上

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sql_server.pyodbc', 
     'NAME': 'test', 
     'USER': 'test', 
     'PASSWORD': 'something_else', 
     'HOST': 'mssqlx', 
     'PORT': '12345', 
     'OPTIONS': { 
      'driver': 'SQL Server', 
     }, 
    }, 
} 

を、私の設定ファイルには、そのようなデータベースのエントリがあります。それならば

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sql_server.pyodbc', 
     'NAME': 'test', 
     'USER': 'test', 
     'PASSWORD': 'something_else', 
     'HOST': 'mssqlx',  # ODBC DSN defined in /etc/freetds.conf 
     'PORT': '12345',  # Probably unneeded. Set in mssqlx 
     'OPTIONS': { 
      'driver': 'SQL Server', # ODBC driver name in /etc/odbcinst.ini 
      'extra_params': "TDS_VERSION=7.0" # Probably unneeded. Set in mssqlx 
     } 
    }, 
} 

は知りませんこれを解決するのに役立ちますが、(Windows上でのみ動作します)ジャンゴ-MSSQLを使用します、(作業)エントリは次のとおりです。

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlserver_ado', 
     'NAME': 'test', 
     'USER': 'test', 
     'PASSWORD': 'something_else', 
     'HOST': '199.555.0.10',   # changed for this example 
     'PORT': '12345', 
     'OPTIONS': {'provider': 'SQLOLEDB'} 
    }, 
} 

はしないでください他の情報が役立つかもしれないことを知っている。何か助けや洞察力を提供してくれてありがとう。

----死後は---- ここで最終的に働いていたものです:データベース用の設定で

部分エントリ:

'default': { 
     'ENGINE' : 'django.db.backends.sql_server.pyodbc', 
     'NAME'  : 'test_db_name', 
     'USER'  : 'test_db_user_name', 
     'PASSWORD' : 'password', 
     # ODBC DSN defined in /etc/freetds.conf 
     'HOST'  : 'mssql_test', 
     # Ignored for Windows; Required for Linux 
     'OPTIONS' : { 
      # ODBC driver name in /etc/odbcinst.ini 
      'driver': 'SQL Server', 
      # NOTE: dsn option is added dynamically later, for Windows 
     } 
    }, 

# The ODBC DSN name specified above as DATABASES.default.HOST is ignored on 
# Windows, where it must be specified as DATABASES.default.OPTIONS.dsn instead. 
# However, we haven't found a way to make DATABASES.default.OPTIONS.dsn work in 
# Linux (and probably the same for Mac). It causes the error: 
# Data source name not found, and no default driver specified 
# Therefore we add it here, but only for Windows. 
# Note: The username and pwd in the windows dsn file is apparently NOT used 
#  (b/c server hosts both test and prod database in same MSSQL 
#  instance, both test and prod dsn files happen to work - they have the 
#  same ip address and port number, but different username/password's) 
# 
# On 64-bit Windows, with our current 32-bit version of pyodbc, the DSN 
# must be created via: 
# C:\Windows\SysWOW64\odbcad32.exe 
# instead of the regular "ODBC Data Sources" app in Control Panel, which 
# invokes: 
# C:\Windows\system32\odbcad32.exe 
# 
# os.name is... 
#  nt  for Hans' laptop (Windows 7) 
#  posix for the "Amazon Linux AMI" (CentOS) on AWS 
#  posix for Fred's Mac 
if os.name == 'nt':  # Windows 
    DATABASES['cf']['OPTIONS']['dsn'] = 'mssql_test' 
+4

あなたが「死後」の場合は、あなたの質問に答えるでしょう。それを答えとして追加してそれを受け入れるか、質問を削除してください(答えられないままぶら下がりません)。 – meataxe

答えて

1

https://github.com/michiya/django-pyodbc-azureを使用してみてください。これは、LinuxとWindowsの両方で動作するはずです。

その後のようなデータベースの設定を定義します。Windowsの下で

DATABASES = { 
    'default': { 
     'ENGINE': 'sql_server.pyodbc', 
     'NAME': 'dbname', 
     'HOST': 'dsn_entry', 
     'PORT': 'port', 
     'USER': '', 
     'PASSWORD': 'pass', 
     'OPTIONS': { 
      'driver': 'FreeTDS', 
      'dsn': 'dsn_entry', 
      'host_is_server': True 
     } 
    } 
} 

OPTIONS'driver'エントリは次のようになります。

'driver': 'SQL Native Client', 

編集:おっと、あなたが問題を解決していたことを確認することができませんでした。私の答えを参考にしておきます。

関連する問題