django之配置mysql

在setting.py文件中注释默认的DATABASES,将其修改为如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_orm',#数据库名
        'HOST':'127.0.0.1',#ip地址(这里用本地测试)
        'PORT':'3306',#端口默认3306
        'USER':"自己的",#用户名
        'PASSWORD':"自己的",#密码
    }
}

然后再项目文件夹下的_init_.py文件中加入:

import pymysql
pymysql.install_as_MySQLdb()

就可以使用mysql数据库了

接着就在models.py文件中:

  在orm中一张表对应一个类 例如:

class Book(models.Model):  #相当于表名
    name=models.CharField(max_length=20,verbose_name="姓名") #字段,取别名在admin上显示,max_length字符长度20个字
    price=models.IntegerField(verbose_name="价格")
    pub_data=models.DateField(verbose_name="日期")
    author=models.CharField(max_length=32)
    publish=models.ForeignKey("publish",'on_delete=models.CASCADE,')  #与publish表创建外键
    authors=models.ManyToManyField("Author")
    def __str__(self):
        return self.name
class author1(models.Model):
    name=models.CharField(max_length=32)

class publish(models.Model):
    name=models.CharField(max_length=32)
    city=models.CharField(max_length=32)
    def __str__(self):
        return self.name

class Author(models.Model):
    name=models.CharField(max_length=32)
    age=models.IntegerField()
    def __str__(self):
        return self.name

book就是一张表,name 、price这些就是字段

这里有两个特殊字段

   publish:这是一个外键,用来连接另一张表,其中publish(字段)就是表publish的一个对象(可以这样理解),在filter以及values中查询要用双下划綫__

  authors:用来多对多的表的连接,ManyToManyField会自动生成第三张表。

一些主要的查询操作如下:

# book_list=Book.objects.all()
 #book_list=Book.objects.all()[0:3] #切片处理
 #book_list=Book.objects.all().values("author").distinct()  # distinct()去重
 #book_list=Book.objects.filter(price__gt=50).values("name","author","price") #price__gt=50查找price大于50的记录,显示名字与价格
 #book_list=Book.objects.filter(name__icontains="p").values("name","author","price") #name__icontains(不区分大小写)查找书名以p开头的书,
 #book_list=Book.objects.exclude(name__icontains="p").values("name","author","price") #  exclude查找除了  name__icontains(不区分大小写)查找书名以p开头以外的书,


 # pub_obj=publish.objects.filter(name="人民出版社")[0] #对表publish取'人民出版社'这条数据
 # book_list=pub_obj.book_set.all() #采用(小写类名book)book_set.all()对表book,返回"人民出版社"的所有书籍的对象集合(表publish没有外键,反向查找)

 #book_list=Book.objects.filter(publish__name="新华出版社").all()#采用__双下划线,publish外键名__name(属性)
 #book_list=publish.objects.filter(book__name="python").all()#采用__双下划线,publish表没有外键,所以用book表(book__name),而上面的book表有外键publish,所以用外键

 #book_list=Book.objects.filter(publish__city="东莞").all()
 #avg=Book.objects.all().aggregate(a=Avg("price"))#用聚合函数做平均值aggregate(Avg("price")),a是自己起的名字
 #avgs=Book.objects.values("authors__name").annotate(Sum("price"))#按作者的名字进行分组
 #aaa=publish.objects.values("name").annotate(Min("book__price"))
 #book_list=Book.objects.filter(Q(price=118)|Q(name="python")).all()#查找价格为118或者书名为python的的书的所有信息
 #book_list=Book.objects.filter(~Q(price=118)).all()#查找除了价格为118以外的书的所有信息
 #book_list=Book.objects.filter(Q(name__contains="p")).all()#查找p开头的所有书的所有信息
 book_list=Book.objects.filter(Q(name__contains="p"),price=109).all()#查找p开头的所有书,然后价格为109的所有信息

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值