Python 让Django模型在MS Azure上的MS-SQL上工作的困难?

Python 让Django模型在MS Azure上的MS-SQL上工作的困难?,python,sql-server,django,azure,model,Python,Sql Server,Django,Azure,Model,我想在Azure上创建一个django web 我花了一整天的时间试图将我的模型类连接到Azure上现有的MSSQL数据库 它仍然不起作用。我的手累了 我列出了我的步骤,希望有人能帮助我,谢谢 第一步。安装依赖项库 sudo pip install --upgrade pip sudo pip install django-pyodbc sudo pip install django-sqlserver sudo pip install django-mssql sudo pip install

我想在Azure上创建一个django web

我花了一整天的时间试图将我的模型类连接到Azure上现有的MSSQL数据库

它仍然不起作用。我的手累了

我列出了我的步骤,希望有人能帮助我,谢谢

第一步。安装依赖项库

sudo pip install --upgrade pip
sudo pip install django-pyodbc
sudo pip install django-sqlserver
sudo pip install django-mssql
sudo pip install django-pyodbc-azure
brew install freetds
brew install freetds --with-unixodbc
第二步。配置写入

~/.bash_profile
    #ODBC
    export ODBCSYSINI=/usr/local/opt/unixodbc/etc
    export ODBCINI=/usr/local/opt/unixodbc/etc/odbc.ini

/etc/odbcinst.ini
    [FreeTDS]
    Driver=/usr/local/lib/libtdsodbc.so
    Setup=/usr/local/lib/libtdsodbc.so
    Server={host}
    UsageCount=1
    Port=1433
    Database={db name}
    User={user name}
    Password={password}
    TDS_Version=7.2
    client_charset=utf-8

/etc/odbc.ini
    [FreeTDS]
    Driver = FreeTDS
    ServerName = {hostname}
    Database = {db name}
    UserName = {user name}
    Password = {password}
    Port = 1433
    Protocol = 7.2
    TDS_Version = 8.0
第三步。尝试连接数据库

tsql -S FreeTDS -p 1433 -U {user name} -P {password}

It’s ok to connect to ‘INFORMATION_SCHEMA’ DB。

But when I try:

    tsql -S FreeTDS -p 1433 -U {user name} -P {password} -D {database name}

I had problems:

    Msg 4075 (severity 16, state 1) from {hostname} Line 1:
        "The USE database statement failed because the database collation Chinese_Traditional_Stroke_Order_100_CS_AS_WS is not recognized by older client drivers. Try upgrading the client operating system or applying a service update to the database client software, or use a different collation. See SQL Server Books Online for more information on changing collations."
    Msg 18456 (severity 14, state 1) from {hostname} Line 1:
        "Login failed for user ‘{user name}’.”
    Error 20002 (severity 9):
        Adaptive Server connection failed
    There was a problem connecting to the server

If I try “tsql -S FreeTDS -p 1433 -U {user name} -P {password}” and under,

1> USE somedb
2> go
    Msg 40508 (severity 16, state 1) from {hostname} Line 1:
        "USE statement is not supported to switch between databases. Use a new connection to connect to a different database."

problems again. (I found some pages to says: USE is not work at a MSSQL DB on Azure)
第四步。试试:python manage.py inspectdb>models.py

django.db.utils.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
第五步。尝试模型

settings.py
    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': ‘{database name}’,
            'USER': ‘{user name}’,
            'PASSWORD': ‘{password}’,
            'HOST': ‘{hostname}’,
            'PORT': '1433',
            'OPTIONS': {
                'driver': 'FreeTDS',
            },
        }
    }

and

$python manage.py shell

>>> from app.models import {ModelName}
>>> {ModelName}.objects.all()

    Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')

(again, no surprise.)
环境:

  • Python:2.7.10
  • Django:1.9.4(最终版)
  • MS-SQL Server版本:V12
  • 操作系统:Mac OSX 10.11.3
  • FreeTDS:0.95.80
  • 其他

    pyobjc-core (2.5.1)
    pyobjc-framework-Accounts (2.5.1)
    pyobjc-framework-AddressBook (2.5.1)
    pyobjc-framework-AppleScriptKit (2.5.1)
    pyobjc-framework-AppleScriptObjC (2.5.1)
    pyobjc-framework-Automator (2.5.1)
    pyobjc-framework-CFNetwork (2.5.1)
    pyobjc-framework-Cocoa (2.5.1)
    pyobjc-framework-Collaboration (2.5.1)
    pyobjc-framework-CoreData (2.5.1)
    pyobjc-framework-CoreLocation (2.5.1)
    pyobjc-framework-CoreText (2.5.1)
    pyobjc-framework-DictionaryServices (2.5.1)
    pyobjc-framework-EventKit (2.5.1)
    pyobjc-framework-ExceptionHandling (2.5.1)
    pyobjc-framework-FSEvents (2.5.1)
    pyobjc-framework-InputMethodKit (2.5.1)
    pyobjc-framework-InstallerPlugins (2.5.1)
    pyobjc-framework-InstantMessage (2.5.1)
    pyobjc-framework-LatentSemanticMapping (2.5.1)
    pyobjc-framework-LaunchServices (2.5.1)
    pyobjc-framework-Message (2.5.1)
    pyobjc-framework-OpenDirectory (2.5.1)
    pyobjc-framework-PreferencePanes (2.5.1)
    pyobjc-framework-PubSub (2.5.1)
    pyobjc-framework-QTKit (2.5.1)
    pyobjc-framework-Quartz (2.5.1)
    pyobjc-framework-ScreenSaver (2.5.1)
    pyobjc-framework-ScriptingBridge (2.5.1)
    pyobjc-framework-SearchKit (2.5.1)
    pyobjc-framework-ServiceManagement (2.5.1)
    pyobjc-framework-Social (2.5.1)
    pyobjc-framework-SyncServices (2.5.1)
    pyobjc-framework-SystemConfiguration (2.5.1)
    pyobjc-framework-WebKit (2.5.1)
    pyodbc (3.0.10)
    django-mssql (1.6.2)
    django-pyodbc-azure (1.9.3.0)
    django-sqlserver (1.7)
    

  • 根据我的经验,似乎需要在Mac OS上的
    odbc.ini
    文件中配置FreeTDS的驱动程序
    /usr/local/lib/libtdsodbc.so

    您可以参考以下内容,建议使用
    pymssql
    包连接Azure SQL数据库。此外,您还可以查看Azure官方文档。

    我遇到了相同的“自适应服务器”错误

    我在django db配置的“选项”部分使用选项“host_is_server”解决了这个问题:

    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'db',
            'USER': 'user',
            'PASSWORD': 'xxxxxx',
            'HOST': 'host',
            'PORT': '1433',
    
            'OPTIONS': {
                'driver': 'FreeTDS',
                'host_is_server': True,
            },
        }
    }
    

    我试过了,但没有成功。我的环境是MacOSX。@Wufone在大多数情况下,MacOSX的使用与Linux的类似。很抱歉没有在没有Mac环境的情况下再现您的问题,但我建议您可以尝试使用搜索引擎搜索Linux的配置,并参考相关文章重新配置它。