• 复习


    day68

    内容回顾(赵导专场)
        1. ORM已经的学过的内容:
            1. Django项目如何使用ORM连接MySQL
                1. 手动创建数据库
                2. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪一个数据库)
                    DATABASES = {
                        'default': {
                            'ENGINE': 'django.db.backends.mysql',  # 连接数据库的类型
                            'NAME': 'day62xiawu',  # 数据库名字
                            'HOST': '127.0.0.1',  # IP
                            'PORT': 3306,  # 端口
                            'USER': 'root',  # 用户名
                            'PASSWORD': '123456',  # 密码
                        }
                    }
                3. 在和settings.py同目录下的__init__.py文件中,告诉Django用pymysql代替MySQLdb来连接数据库
                    import pymysql
                    pymysql.install_as_MySQLdb()
                4. 在app/models.py中,定义类,类一定要继承models.Model
                    class Book(models.Model):
                        id = models.AutoField(primary_key=True)
                        title = models.CharField(max_length=32)
                5. 执行两条命令
                    1. 在哪儿执行?
                        在项目的根目录(有manage.py文件的那个目录)
                    2. 命令
                        python manage.py makemigrations   --> 将models.py文件中的改动记录在小本本(app/migrations/00xx_****.py)上
                        
                        python manage.py migrate           --> 将改动翻译成SQL语句,去数据库中执行
            2. 表和表之间的关系
                             这是Django内置的models模块  在models.py中
                1. 一对多(出版社和书)
                    publisher = models.ForeignKey(to="Publisher")
                    
                    在数据库中:
                        有没有publisher这个字段?
                        数据库中实际 生成的是一个 publisher_id 字段
                    
                2. 多对多(作者和书)
                    books = models.ManyToManyField(to="Book")
                    
                    在数据库中:
                        是通过第三张表建立的关系
     
            3. 增删改查操作
                            这是自己写类的models模块   from app01 import models
                1. 单表增删改查
                    增:
                        models.Publisher.objects.create(name="沙河出版社")
                    查:
                        models.Publisher.objects.get(id=1)
                        models.Publisher.objects.get(name="沙河出版社")
                    删:
                        models.Publisher.objects.get(id=1).delete()
                    改:
                        obj = models.Publisher.objects.get(id=1)
                        obj.name = "沙河第二出版社"
                        obj.save()
                2. 外键的增删改查
                    增、删、查同上
                    
                    book_obj = models.Book.objects.get(id=1)
                    
                    book_obj.publisher 是什么?    *****
                        和我这本书关联的出版社对象
                        
                        book_obj.publisher.id    和我这本书关联的出版社的id值
                        book_obj.publisher.name  和我这本书关联的出版社的名称
                        
                    book_obj.publisher_id 是什么?
                        和我这本书关联的出版社的id值
                        
                3. 多对多操作
                    
                    1. 查id为1的作者都写过的书?
                        author_obj = models.Author.objects.get(id=1)
                        author_obj.books.all()     --> 和我这个作者关联的所有书对象
                    2. 想给作者绑定多本书?
                        author_obj = models.Author.objects.get(id=1)
                        author_obj.books.set([1,2,3]) --> 把id是1、2、3的书和我这个作者关联上

    正则复习

     1 import re
     2 
     3 r = re.compile(r'^delete/([a-zA-Z]+)/(d+)/$')
     4 
     5 ret = r.match("delete/author/10/")
     6 
     7 print(ret)  # <_sre.SRE_Match object; span=(0, 17), match='delete/author/10/'>
     8 
     9 print(ret.groups())  # groups
    10 
    11 print(ret.group(1))  # group

    执行结果:

    <_sre.SRE_Match object; span=(0, 17), match='delete/author/10/'>
    ('author', '10')
    author
    
    Process finished with exit code 0

    反射复习

     1 # '''
     2 # 反射
     3 # '''
     4 #
     5 import sys
     6 
     7 class Person(object):
     8     def __init__(self, name):
     9         self.name = name
    10 
    11     def eat(self, food):
    12         print("{} 在吃 {}".format(self.name, food))
    13 
    14     def dream(self):
    15         print("{} 在做白日梦!".format(self.name))
    16 
    17 
    18 s = "person"
    19 
    20 
    21 # 打印当前可用的变量
    22 print(locals()["s"])
    23 print(locals().get("s"))
    24 print("="*10)
    25 # 字符串首字母大写
    26 s = s.capitalize()
    27 print(s, type(s))
    28 
    29 # 反射
    30 if hasattr(sys.modules[__name__], s):
    31     print("找到了")
    32     the_class = getattr(sys.modules[__name__], s)
    33     print(the_class)
    34     obj = the_class("包子")
    35     obj.eat("")

    执行结果:

    person
    person
    ==========
    Person <class 'str'>
    找到了
    <class '__main__.Person'>
    包子 在吃 馅
    
    Process finished with exit code 0

    时间间隔

     1 """
     2 时间间隔
     3 """
     4 
     5 import datetime
     6 
     7 
     8 now = datetime.datetime.now()  # 你领了一张有效期为7天的优惠券
     9 print(now)
    10 # 时间间隔
    11 d7 = datetime.timedelta(days=7)
    12 # 求失效时间
    13 ret = now + d7
    14 print(ret)

    执行结果:

    2019-02-27 14:57:33.425870
    2019-03-06 14:57:33.425870
    
    Process finished with exit code 0

    复习反向解析(day68orm)

    点击页面的index后

     

  • 相关阅读:
    ActionForm补充
    ActionForward
    struts模式匹配
    ActionMapping
    struts1.x的国际化
    DispatchAction
    ActionForm作为类型转换
    struts自定义异常
    hibernate核心接口
    Visual C# 2008+SQL Server 2005 数据库与网络开发 9.5 小结
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/10434272.html
Copyright © 2020-2023  润新知