sql创建数据库
- sudo mysql 进入
- mysql> create database book_01
安装 mysqlclient
sudo apt-get install libmysqlclient-dev
sudo apt-get update
远程控制SQL
- 得到远程密码
sudo cat /etc/mysql/debian.cnf - 获取IP地址
ifconfig
sudo mysql - 问题一,不允许远程控制
先进入本地
: mysql -u root -p
mysql: show databases;
mysql: use mysql;
mysql: show tables;
mysql: select host , user from user;
这里,host 字段,表示可以登录的主机名字和方式,user字段,代表用户名
mysql: update user set host='%' where user='root';
mysql: flush privileges;
命令行增加
增删改查
使用shell
python manage.py shell
增加数据
方式一,必须使用save方法才能将数据保存
from book.models import BookInfo
book = BookInfo(
name = 'Django',
pub_data= '2010-7-4',
readcount= 10
)
book.save()
复制代码到shell里面运行
方式二 objects相当于一个代理,实现增删改查
BookInfo.objects.create(
name = 'ceshikaifa',
pub_data = '2033-7-7',
)
修改数据
方式一
%% select * from bookinfo where id=6
book = BookInfo.objects.get(id = 8)
book.name = 'yunweikaifa'
book.save() 保存必须使用这个方法
修改数据方式二
%% filter 过滤器
BookInfo.objects.filter(id=8).update(name='pachongrumen',commentcount = 6)
删除数据
方式一
book = BookInfo.objects.get(id=8)
book.delete()
删除数据方式二
BookInfo.objects.filter(id=5).delete()
查询数据
% get查询单一结果,如果不存在会抛出模型类 .DoesnotExist异常
book = BookInfo.objects.get(id=1)
try:
book = BookInfo.objects.get(id=1)
except BookInof.DoesNotExist:
print('bucunzai')
BookInfo.objects.all() % 获取所有结果
查询结果数据量
BookInfo.objects.all().count()
过滤查询 filter
% filter 过滤多个结果
% exclude 排除多个结果
% get 过滤单一结果
% 模型名称.objects.filter(属性名__运算符=值) 双下划线
book = BookInfo.objects.get(id=1)
book = BookInfo.objects.get(id__exact=1)
book = BookInfo.objects.get(pk=1)
book = BookInfo.objects.filter(pk=1)[0]
BookInfo.objects.filter(name__contains = 'She')
BookInfo.objects.filter(name__endswith = 'She')
BookInfo.objects.filter(id__in=[1,3,5])
%% gt,gte,lt,lte,大于,大于等于,小于,小于等于
BookInfo.objects.exclude(id=3)
多字段比较
两个属性对比使用F对象,django.db.models
from django.db.models import F
% 模型类名.objects.filter(属性名__运算符=F('第二个属性名'))
from django.db.models import F
BookInfo.objects.filter(readcount__gte=F('commentcount'))
并且查询
BookInfo.objects.filter(readcount__gte=30).filter(id__lt=3)
BookInfo.objects.filter(readcount__gte=30,id__lt=3)
% 语法结果. 模型类名.objects.fitler(Q(属性名__运算法=值)&Q(属性名__运算法=值)&Q(属性名__运算法=值))
或者查询
% 语法结果. 模型类名.objects.fitler(Q(属性名__运算法=值)|Q(属性名__运算法=值)|Q(属性名__运算法=值))
from django.db.models import Q
BookInfo.objects.filter(Q(readcount__gt=20)|Q(id__lt=2))