Django 的ORM

指定字段:

<1> CharField:字符串字段,用于较短的字符串,CharField 要求必须有一个参数 maxlength,用于从数据库层和Django效验层限制该字段所允许的最大字符数.

<2> IntegerField:用于保存一个整数.

<3> FloatField:一个浮点数,必须提供两个参数: max_digits 整数位数, decimal_places 小数位数.

<4> AutoField:一个 IntegerField, 添加记录时它会自动增长, 你通常不需要直接使用这个字段;自定义一个主键:my_id=models.AutoField(primary_key=True)

<5> BooleanField: A true/false field. admin 用 checkbox 来表示此字段.

settings配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 'NAME':'bms',      # 要连接的数据库,连接前需要创建好 'USER':'root',       # 连接数据库的用户名 'PASSWORD':'',       # 连接数据库的密码 'HOST':'127.0.0.1', # 连接主机,默认本级 'PORT':3306     # 端口 默认3306  } }

注意1:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建 USER和PASSWORD分别是数据库的用户名和密码。设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的__init__,在里面写入:

 
1
2
import pymysql
pymysql.install_as_MySQLdb()
 

最后通过两条数据库迁移命令即可在指定的数据库中创建表 :

 
1
2
python manage.py makemigrations
python manage.py migrate
 

注意2:确保配置文件中的INSTALLED_APPS中写入我们创建的app名称

 
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', "book" ]



单表查询:
 
<1> all():                  查询所有结果
  
<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
  
<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
                            如果符合筛选条件的对象超过一个或者没有都会抛出错误。
  
<4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
 
<5> order_by(*field):       对查询结果排序
  
<6> reverse():              对查询结果反向排序
  
<8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
  
<9> first():                返回第一条记录
  
<10> last():                返回最后一条记录
  
<11> exists():              如果QuerySet包含数据,就返回True,否则返回False
 
<12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                            model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
 
<14> distinct():            从返回结果中剔除重复纪录
查询API
 
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__contains="python")
Book.objects.filter(title__icontains="python")
Book.objects.filter(title__startswith="py")
Book.objects.filter(pub_date__year=2012)
模糊查询
 


 

猜你喜欢

转载自www.cnblogs.com/zbw582922417/p/9853041.html
今日推荐