django学习-数据库(上)

1.配置

Flask安装过 MySqldb,虽然有orm对象关系映射,但是有了sql语句,是安装
数据库驱动包—执行orm的sql语句, Flask-MySqldb

django : pip install PyMySQL
但是django原生是使用MySqldb的,所以需要转换
from pymysql import install_as_MySQLdb

install_as_MySQLdb()
在工程init.py中

配置信息settings:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'mysql',  # 数据库用户密码
        'NAME': 'django_demo'  # 数据库名字
    }
}

2.定义模型类
具体的字段和约束 
小点:在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理
CASCADE 级联,删除主表数据时连通一起删除外键表中数据

(默认)PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

迁移:
生成迁移文件
python manage.py makemigrations
同步到数据库中
python manage.py migrate

3.工具的使用
3-1.shell
一种交互,像ipython,但是有些配置是读取当前工程的,如果使用python来测试,还需要我们配置
python manage.py shell

3-2.mysql执行的日志,动态
动态的把执行过的sql语句显示出来
配置:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
把68,69行前面的#去除,69行的数字改成 1 ,然后保存并重启mysql服务
sudo service mysql restart
tail -f /var/log/mysql/mysql.log  # 可以实时查看数据库的日志内容
适用于linux

4.数据库操作

4-1.增加
(1)对象.save() 像  flask的commit

(2)通过模型类 .objects.create()保存
HeroInfo.objects.create(  hname='沙悟净' )


4-2.查询      类.objects   通过模型类   返回的是查询对象 ( 类Flask的 News.query)

(1) 简单查询  BookInfo.objects.all()
get 查询单一结果,如果不存在会抛出模型类.DoesNotExist异常。
all 查询多个结果。
count 查询结果数量。

(2) 过滤查询    过滤条件的表达语法:属性名称__比较运算符=值 (btitle__contains='传')  因为它的语法表达格式:相等和不相等不是简单的==符号
filter 过滤出多个结果
exclude 排除掉符合条件剩下的结果
get 过滤单一结果

(2-1) 相等 : exact
BookInfo.objects.filter(id__exact=1)
(2-2) 包含 : contains
BookInfo.objects.filter(btitle__contains='传')
(2-3) 开头,结尾 startswith、endswith
BookInfo.objects.filter(btitle__endswith='部')
(2-4) 空 : isnull
BookInfo.objects.filter(btitle__isnull=False)
(2-5) 在~里 : in 
BookInfo.objects.filter(id__in=[1, 3, 5])
(2-6) 比较 : gt 大于, gte 大于等于, lt 小于, lte 小于等于
BookInfo.objects.filter(id__gt=3)

(2-7) 不等于 : exclude
BookInfo.objects.exclude(id=3)

(2-8) 日期查询: year、month、day、week_day、hour、minute、second
BookInfo.objects.filter(bpub_date__year=1980)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值