Django3.0 中使用django-pyodbc-azure 和 pyodbc 链接sql server 2008数据库,操作已有的数据库 和表
目录:
1、安装各个插件
(1)安装 Django 3.0,创建项目
安装:
pip install django
创建项目项目
在本地新建一个目录用于存放项目, D:\python\PycharmHome\ 目录下新建 DjnagoProject
使用 pycharm 新建一个 Django 项目
(2)安装 pyodbc
pip install pyodbc
(3)django-pyodbc-azure
pip install django-pyodbc-azure
(4)安装 sql server
2、django-pyodbc-azure 操作 sql server 中已经存在的数据库
Django 操作数据库需要建立相应的模型,在项目根目录中的 models.py 文件中建立
这是原始的models 文件
我这个项目的目录在 D:\python\PycharmHome\DjnagoProject\DjnagoProject1
2.1配置settings.py
在项目的 settings.py 中的 DATABASES 选项
可以参照 django-pyodbc-azure 官网的的说明 https://pypi.org/project/django-pyodbc-azure/
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': "自收录数据", # 需要操作的数据库名字
"USER": "sa", # 连接数据库的用户名
'PASSWORD': '123456', # 对应的用户密码
'HOST': '127.0.0.1', # IP 地址
'PORT': '1433', # 端口号
'OPTIONS': {
'driver': 'SQL Server Native Client 11.0', # 驱动
'MARS_Connection': True,
},
}
}
2.2 配置sql server 数据库中已有数据表的模型
在 cd 中移动到该目录,或者在 pycharm 中的 Terminal 运行:
python manage.py inspectdb
会自动创建models 映射,对应数据库中的所有的表,但是不会生成 models 文件内容,还需要运行 python manage.py inspectdb> models.py 就会自动生成 models文件,内容为数据库中全部已有数据表的映射。
python manage.py inspectdb> models.py
数据库已有的数据表:
生成的 models.py 文件
注意: 这个 models 文件是错误的,因为 自动映射会将中文名字的表映射为空名字,需要手动修改 对应 class 的名字。
其实 class 的名字不重要,可以随便命名,主要 db_table : 这个用于指定数据表的名字
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey has `on_delete` set to the desired behavior.
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
class Hb(models.Model):
id = models.AutoField(db_column='ID', primary_key=True) # Field name made lowercase.
标题 = models.TextField(blank=True, null=True)
类别 = models.TextField(blank=True, null=True)
发文字号 = models.TextField(blank=True, null=True)
批准部门 = models.TextField(blank=True, null=True)
批准日期 = models.TextField(blank=True, null=True)
发布部门 = models.TextField(blank=True, null=True)
发布日期 = models.TextField(blank=True, null=True)
实施日期 = models.TextField(blank=True, null=True)
时效性 = models.TextField(blank=True, null=True)
效力级别 = models.TextField(blank=True, null=True)
全文 = models.TextField(blank=True, null=True)
url = models.TextField(blank=True, null=True)
packzip = models.IntegerField(blank=True, null=