赞
踩
这两天学习了下Django,因为我使用的数据库是 SqlServer,在模型那里遇到了点问题,这篇文章做下记录。
Django连接数据库,你如果不使用模型,直接使用 pymssql 的话也是没问题的,毕竟通常就是这种嘛,这种的话这里就不说了,大家应该都懂。
使用pycharm创建项目(使用你任何你知道的方式创建一个项目就行了)
这里创建了个新环境,基于python3.9的,先已配置有环境可直接选择先前配置的解释器 即可,仅做演示。
默认创建出来的项目使用的是Django3.2.5。
这里直接创建的项目已带一个app,相关配置已默认设置好,其他方式的请参考Django官网。
安装 mssql-django与pyodbc 3.0 (or newer)
随意选择一种方式即可,工程使用的如下(仅展示mssql-django,pyodbc 类似)。
https://pypi.org/project/mssql-django/
注意一点,python解释器切换到我们刚刚创建的。
配置支持SqlServer
我们在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:
具体配置请参考mssql-django
# 'driver': 'SQL Server Native Client 11.0',
DATABASES = {
'default': {
'ENGINE': 'mssql',
'NAME': 'test', # 数据库名称
'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
'PORT': 1433, # 端口
'USER': 'sa', # 数据库用户名
'PASSWORD': 'lh1234567', # 数据库密码
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
配置完成之后运行项目,看是否有报错,无报错则配置成功。
项目结构概览
首先看下项目结构:
配置url
修改test_sqlserver目录下urls.py文件如下:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('web/', include("web.urls"))
]
在web目录下新建urls.py文件,内容如下:
from django.urls import path
from . import views
urlpatterns = [
path('testdb/', views.testdb),
]
配置model
在web目录下新建models.py文件,内容如下:
from django.db import models
# Create your models here.
class Test(models.Model):
name = models.CharField(max_length=20)
配置view
在web目录下新建views.py文件,内容如下:
from django.http import HttpResponse
from .models import Test
# 数据库操作
def testdb(request):
test1 = Test(name='runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
```
在命令行或终端中运行:
python manage.py migrate # 创建表结构
python manage.py makemigrations web # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate web # 创建表结构
命令执行结果如下:
注意一点,我们开始新创建了个python39的环境,记得切换过去,如果你使用conda的话。
看下数据库结果:
默认生成上述表,注意web_test表是我们自己定义的(app名+models里类名)。
到此就大功告成了,把运行起来看看怎么样吧。
看下数据库结果:
说实话,这个连SqlServer还弄了差不多半天,本身Django官方只支持PostgreSQL、MariaDB、MySQL、Oracle 和 SQLite。 而我要使用的是SqlServer,所以就不得不使用第三方库。但是官方文档里提到的 却是 django-mssql-backend这个库。
看下这个库的支持情况:
我使用Django3.2.5的版本的时候,他执行创建数据表的时候,只创建了
两张表,还报一堆错,这就尴尬了。而且也看出来了,他的Python也支持到了3.7,所以就不得不重新选择了。
所幸在 https://stackoverflow.com/questions/67358097/keyerror-include-on-migrating-models-to-sql-server这个里面找到了答案。
就是使用 mssql-django,看下他的支持:
,Django支持到了4.0,Python也支持到了3.9.暂时完美解决了我说遇到的问题。
https://stackoverflow.com/questions/67358097/keyerror-include-on-migrating-models-to-sql-server
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。