当前位置:   article > 正文

Django配置连接SqlServer(版本Django3.2.5,python3.9)_django连接sqlserver

django连接sqlserver

前言

  • 这两天学习了下Django,因为我使用的数据库是 SqlServer,在模型那里遇到了点问题,这篇文章做下记录。

  • Django连接数据库,你如果不使用模型,直接使用 pymssql 的话也是没问题的,毕竟通常就是这种嘛,这种的话这里就不说了,大家应该都懂。

开发环境

  • windows 10
  • python 3.9
  • Django 3.2.5
  • pycharm 2021.2.1

创建工程

  1. 使用pycharm创建项目(使用你任何你知道的方式创建一个项目就行了)

    这里创建了个新环境,基于python3.9的,先已配置有环境可直接选择先前配置的解释器 即可,仅做演示。
    默认创建出来的项目使用的是Django3.2.5。
    这里直接创建的项目已带一个app,相关配置已默认设置好,其他方式的请参考Django官网。
    在这里插入图片描述

  2. 安装 mssql-django与pyodbc 3.0 (or newer)
    随意选择一种方式即可,工程使用的如下(仅展示mssql-django,pyodbc 类似)。
    https://pypi.org/project/mssql-django/
    注意一点,python解释器切换到我们刚刚创建的。
    在这里插入图片描述

  3. 配置支持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',
            },
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    配置完成之后运行项目,看是否有报错,无报错则配置成功。

  4. 项目结构概览
    首先看下项目结构:
    在这里插入图片描述

  5. 配置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")) 
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    web目录下新建urls.py文件,内容如下:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('testdb/', views.testdb),
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  6. 配置model
    web目录下新建models.py文件,内容如下:

    from django.db import models
    
    
    # Create your models here.
    class Test(models.Model):
        name = models.CharField(max_length=20)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  7. 配置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>")
    	```
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

数据库初始化

在命令行或终端中运行:

python manage.py migrate   # 创建表结构

python manage.py makemigrations web  # 让 Django 知道我们在我们的模型有一些变更

python manage.py migrate web  # 创建表结构
  • 1
  • 2
  • 3
  • 4
  • 5

命令执行结果如下:
注意一点,我们开始新创建了个python39的环境,记得切换过去,如果你使用conda的话。
在这里插入图片描述
看下数据库结果:
在这里插入图片描述
默认生成上述表,注意web_test表是我们自己定义的(app名+models里类名)。

演示

到此就大功告成了,把运行起来看看怎么样吧。

在这里插入图片描述
看下数据库结果:
在这里插入图片描述

结论

说实话,这个连SqlServer还弄了差不多半天,本身Django官方只支持PostgreSQLMariaDBMySQLOracleSQLite。 而我要使用的是SqlServer,所以就不得不使用第三方库。但是官方文档里提到的 却是 django-mssql-backend这个库。
看下这个库的支持情况:
在这里插入图片描述
我使用Django3.2.5的版本的时候,他执行创建数据表的时候,只创建了

  1. django_migrations
  2. django_content_type

两张表,还报一堆错,这就尴尬了。而且也看出来了,他的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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/598003
推荐阅读
相关标签
  

闽ICP备14008679号