ORM

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

ORM在业务逻辑层和数据库层之间充当了桥梁的作用。
在Python程序中要用到数据库中的数据,怎么办?
使用pymysql连接MySQL数据库的步骤
import pymysql
建立连接
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    database='day43',
    user='root',
    password='123',
    charset='utf8')
获取光标对象
cursor = conn.cursor()                                  --> 默认返回[(), ()]
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) --> 默认返回[{}, {}]
执行sql语句
cursor.execute('select * from userinfo')
cursor.execute('select * from userinfo where username=%s and password=%s', ['xyh', 'xyh123'])
获取结果
cursor.fetchone()
cursor.fetchall()
cursor.fetchmany(n)
ORM(Object Relational Mapping)是什么?
    新的语法,不需要我们自己写SQL语句
    我们按照新的语法写代码,他帮我翻译成SQL语句
ORM优点:
    开发效率高
    容易掌握
    容易移植    
ORM的缺点:
    代码的执行效率低
ORM的重点:
    类          <-->       数据表
    属性        <-->       字段
    对象        <-->       数据行
Django中ORM如何使用?
告诉Django框架连接哪个数据库
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',  # 告诉Django要连接的是MySQL数据库
    'NAME': 'day57',  # 数据库名称
    'HOST': '127.0.0.1',  # 数据库的IP
    'PORT': 3306,  # 数据库的端口
    'USER': 'root',  # 连接数据的账号
    'PASSWORD': '123'  # 连接数据库的密码
    }
}
告诉Django框架用什么连接数据库
    在和settings.py同目录下的__init__.py文件中:
    import pymysql
    pymysql.install_as_MySQLdb()
在app下面的models.py这个文件中定义类
    class 类名(models.Model):
        pass
两个命令
    python manage.py makemigrations    --> 在小本本(app/migrations)上记录models.py的变更
    python manage.py migrate           --> 把变更记录翻译成SQL语句,去数据库执行
图书管理系统
1. 表结构
    1. 出版社(周五)
    2. 书籍
    3. 作者表
    4. 作者和书籍的关系表
    
出版社的增删改查
    1. 查
        1. ORM: Publisher.objects.all()   --> 查询所有的出版社数据
        2. HTML中写for循环(模板语言)
        {% for i in [..., ...] %}
        {% endfor %}
    2. 增
        1. ORM创建数据
            Publisher.objects.create(name='新出版社名称')
    3. 删
        1. HTTP中URL添加参数
            /delete_publisher/?id=1
        2. 如何在Django中获取URL中的参数
            request.GET            --> 一个大字典
            request.GET.get('id')  --> 取值
        3. ORM中删除操作
            Publisher.objects.filter(id=1).delete()
    4. 改
        1. ORM修改
            obj.name = '新出版社名称'
            obj.save()                 --> 把改动提交到数据库

 

posted @ 2018-10-26 15:29  .why  阅读(255)  评论(0)    收藏  举报
Live2D