Python----ORM

Python学习之路,点击有全套Python笔记

对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。

SQLAlchemy安装和配置

安装命令:

pip install SQLAlchemy

验证:

import sqlalchemy
ORM模型介绍

常见类型:

  • Integer
  • Float
  • Boolean
  • ForeignKey:外键用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
  • Date/DateTime
  • String
新建ORM模型
from sqlalchemy import Column, String, Integer, create_engine, DATETIME
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 初始化数据库连接:
engine = create_engine('mysql://root:root@localhost:3306/school_new?charset=utf8')  # 'mysql://用户名:密码@IP:端口号/数据库名'
# 创建对象的基类:
Base = declarative_base()
# 创建session类型
Session = sessionmaker(bind=engine)
class School(Base):
    __tablename__ = 'student'
    id = Column(Integer, primary_key=True)
    name = Column(String(200), nullable=False)
    nickname = Column(String(200), nullable=True)
    sex = Column(String(1), nullable=True)
    in_time = Column(DATETIME, nullable=True)
# 创建表,内部会检查是否创建
School.metadata.create_all(engine)

class OrmTest(object):
    def __init__(self):
        self.session = Session()

    def add_one(self):
        # 新增记录
        new_obj = School(
            id=2,
            name='张三',
            nickname='san',
            sex='男',
            in_time='now'
        )
        # 添加到session
        self.session.add(new_obj)
        # 提交即保存到数据库
        self.session.commit()
        return new_obj

def main():
    obj = OrmTest()
    rest = obj.add_one()
    print(rest.id)

main()
通过ORM查询数据
 def get_one(self):
        # 获取一条数据
        return self.session.query(School).get(1)

    def get_more(self):
        # 获取多条数据
        return self.session.query(School).filter_by(sex='男')
通过ORM修改/删除数据
# 修改
    def update_data(self, sex):
        # 修改多条数据
        # 获取要修改的数据
        data_list = self.session.query(School).filter_by(nickname='san')
        for item in data_list:
            item.nickname = 'er'
            self.session.add(item)
        self.session.commit()
        # 修改单条数据
        # new_obj = self.session.query(School).get(sex)
        # if new_obj:
        #     new_obj.sex = '女'
        #     self.session.add(new_obj)
        #     self.session.commit()
        #     return True
        # return False
# 删除
    def delete_data(self, id):
        # 删除数据
        # 获取要删除的数据
        new_obj = self.session.query(School).get(id)
        self.session.delete(new_obj)
        self.session.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值