Python之web开发(三):python使用django框架搭建网站之SQLserver数据库连接

先简单跟大家复习一下Django项目之前的内容:
step1:建立一个Django项目的工程(使用django-admin.py startproject ×××)
step2:创建app并配置相应的文件(app根据用户的功能模块去划分:manage.py startapp ×××),并在setting.py中添加app等内容。
step3:上面是完成本次工程的基本的操作和配置,接下来就是在已有的配置的基础上,
分别完成model模块、views模块、urls模块,可以理解为MVC结构,

  • model模块功能是完成数据库的创建以及框架和数据库之间的默认接口;
  • views模块功能是负责将数据很好的显示在前端以及控制前端的内容;
  • urls模块功能则是将各个视图所返回的值能够通过urls模块将其显示在前端。
    编写 Model 是SQL server建设的核心:
    ****使用软件(弄清楚这些很关键,否则容易在SQL server测试时出错):
    python: 3.7.4
    Django:2.2.6
    Sql server:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)

    【写在前面】:
    sql server是微软出的一款闭源的可运行于windows和linux平台上的关系型数据库。由于其闭源的特性,所以较少有公司使用,但是比较神奇的是,我所在的公司和我几个朋友所在的公司业务都是以爬虫为主,都是以sql server作为主要的数据库在使用。

官方介绍详见:数据库配置¶ https://docs.djangoproject.com/zh-hans/2.0/intro/tutorial02/
【应用】
在 Django 里写一个数据库驱动的 Web 应用

  • step1:是定义模型 - 也就是数据库结构设计和附加的其它元数据,这些概念可以通过一个简单的 Python 类来描述。

一、打包
  如果你是使用Django的老手应该知道**Django默认不支持sql server**;如果你刚开始接触Django,那么你应该知道Django默认支持四种数据库:postgresql、mysql、oracle、sqlite。以上四个数据库不需要直接进行过多的操作,只需要你修改项目中的settings.py文件中的DATABASE就可以了。

但是使用sql server,则需要自己再导入一些东西。
step1:打开我们的setting我们可以看到下图中确认缺少SQL server连接库-django-pyodbc-azure库(files→setting)
在这里插入图片描述
搜索并自动安装 django-pyodbc-azure库(也可 pip install 安装)
在这里插入图片描述
完成安装如下图:
在这里插入图片描述
**step2:**完成库安装以后就修改你的项目中的settings.py文件

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        #  'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'DjangoDB',      # 数据库名
        'USER': 'sa',            # 数据库登录用户
        'PASSWORD': '726803',    # 数据库密码
        'HOST': '(local)',       # 数据库服务器
        'PORT': '',              # 端口,默认1433
        'OPTIONS': {             # odbc驱动
            'driver': 'SQL Server Native Client 10.0',
            'MARS_Connection': True,
        },
    }
}

【特别说明】:

  1. **‘ENGINE’**这个键值对是固定写法(需要提前pip install pyodbc并且import pyodbc以后才能生效
  2. ’NAME’: ‘DjangoDB’, # 数据库名位体检在数据库中我们手动建好的的名称非自动生成
  3. ’USER’: ‘sa’, # 数据库登录用户
    ’PASSWORD’: ‘726803’, # 数据库密码
    ’HOST’: ‘(local)’, # 数据库服务器(一定要填入下图红框处名称)
    在这里插入图片描述
    ‘PORT’: ‘’, # 端口,默认1433
  4. 在连接默认数据库的时候很多人都没有写过’OPTIONS’这个东西,一开始没有写,结果怎么着都连不上。很多人说在odbc里调数据库的东西引擎。结果加进去还是不行,最后发现是’OPTIONS’没有写,写完之后所有问题都解决了。

参考原文链接:https://blog.csdn.net/qq_39936349/article/details/80990483

step3:model文件配置
特别说明:是自己通过python manage.py startapp myapp生成的项目名下文件中的model.py文件
如下图:在这里插入图片描述
codes:

from django.db import models
# Create your models here.
class UserInfo(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16, help_text=u'名字')
    moblie = models.IntegerField()
    password = models.CharField(max_length=24)

step4:同步数据库:
只需要记住,改变模型需要这三步:

  • 编辑 models.py 文件,改变模型。
  • 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
  • 运行 python manage.py migrate 来应用数据库迁移。

terminal依次执行如下两段代码
1、生成迁移文件:

python manage.py makemigrations

在这里插入图片描述
2、生成数据库表:

python manage.py migrate

在这里插入图片描述
ps 能看到具体操作指令的 操作:
在这里插入图片描述
数据库验证:
在这里插入图片描述
你也可以通过指令: python manage.py check 实现整个项目中的操作有没有问题。
在这里插入图片描述
【写在后面】
错误提示:
1.执行manage migrate时报告“django.db.utils.InterfaceError: (‘IM002’, ‘[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnect)’) ”的错误
解决方法:
a. 检查settings.py文件的信息是否正确

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        #  'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'DjangoDB',      # 数据库名
        'USER': 'sa',            # 数据库登录用户
        'PASSWORD': '726803',    # 数据库密码
        'HOST': '(local)',       # 数据库服务器
        'PORT': '',              # 端口,默认1433
        'OPTIONS': {             # odbc驱动
            'driver': 'SQL Server Native Client 10.0',
            'MARS_Connection': True,
        },
    }
}

b. 可运行以下代码检查Python连接SqlServer 2008数据库是否正常

import pyodbc
connect = pyodbc.connect(r'DRIVER={SQL Server Native Client 10.0};'r'SERVER=(local);'r'DATABASE=test;UID=sa;PWD=726803')
cursor = connect.cursor()
cursor.execute("select * from test")
for row in cursor:
    print(row.TIME, row.DATA)
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以按照以下步骤创建一个连接 Sqlserver 数据库的 Django Web 项目实例: 1. 确保已安装 Django 和 pyodbc: ```shell pip install django pyodbc ``` 2. 在 Django 项目的 `settings.py` 文件中配置数据库连接: ```python DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'NAME': 'your_database_name', 'HOST': 'your_database_host', 'PORT': 'your_database_port', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'OPTIONS': { 'driver': 'SQL Server Native Client 11.0', # 根据你的 Sqlserver 版本选择驱动 }, }, } ``` 3. 在 `settings.py` 文件中添加 pyodbc 驱动配置: ```python DATABASES['default']['OPTIONS']['driver'] = 'SQL Server Native Client 11.0' # 根据你的 Sqlserver 版本选择驱动 ``` 4. 在项目的 `__init__.py` 文件中添加以下代码: ```python import pyodbc # 配置 Sqlserver 驱动 pyodbc.autocommit = True pyodbc.pooling = False ``` 5. 运行以下命令创建 Django 项目: ```shell django-admin startproject your_project_name ``` 6. 创建一个 Django 应用程序: ```shell cd your_project_name python manage.py startapp your_app_name ``` 7. 在 `settings.py` 文件中将应用程序添加到 `INSTALLED_APPS` 列表中: ```python INSTALLED_APPS = [ ... 'your_app_name', ] ``` 8. 在应用程序的 `models.py` 文件中定义数据库模型: ```python from django.db import models class YourModel(models.Model): # 定义模型字段 field1 = models.CharField(max_length=100) field2 = models.IntegerField() def __str__(self): return self.field1 ``` 9. 运行以下命令创建数据库表: ```shell python manage.py makemigrations python manage.py migrate ``` 10. 在视图中使用模型: ```python from django.shortcuts import render from .models import YourModel def your_view(request): # 从数据库中获取数据 data = YourModel.objects.all() return render(request, 'your_template.html', {'data': data}) ``` 11. 创建模板文件 `your_template.html` 并在其中显示数据: ```html <ul> {% for item in data %} <li>{{ item.field1 }}</li> {% endfor %} </ul> ``` 12. 运行项目: ```shell python manage.py runserver ``` 这样,你就创建了一个连接 Sqlserver 数据库的 Django Web 项目实例。记得根据实际情况修改数据库连接配置和模型字段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间之里

好东西就应该拿出来大家共享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值