Python 让Django模型在MS Azure上的MS-SQL上工作的困难?
我想在Azure上创建一个django web 我花了一整天的时间试图将我的模型类连接到Azure上现有的MSSQL数据库 它仍然不起作用。我的手累了 我列出了我的步骤,希望有人能帮助我,谢谢 第一步。安装依赖项库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
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.)
环境:
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的配置,并参考相关文章重新配置它。