ORM->SQLAlchemy框架的学习

    ORM英文名叫做Object Relational Mapping,即关系对象映射。主要是将数据库的表抽象成一个对象,将数据库和对象作映射;表中的每个字段都对应成该对象的属性,说到底就是ORM将编程的对象模型和数据库的关系模型建立映射关系。直接对对像模型进行操作,而不再需要繁琐的SQl语言。

    而ORM的框架有很多,今天我们只来学SQLAlchemy框架这个框架。该框架主要是建立在数据库的API之上,利用关系对象的映射从而进行数据库的操作(对象转换成SQL,数据API执行SQL获取执行结果),如下图:

SQLALchemy 框架的基础操作

1、与数据库的对应关系

    类对应数据库的表

     对像对应数据库中的字段

2、操作过程

2.1 创建连接引擎

此过程主要是与数据库建立连接

engine=create_eingine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)

格式:mysql+pymysql://数据库用户名:数据库密码@主机IP:端口号/数据库名称

encoding配置参数指定了和和数据库之间交换的数据的编码方式

echo 参数为 True 时,会显示每条执行的 SQL 语句,生产环境下可关闭

2.2 连接会话

#导入模块

from sqlalchemy.orm import sessionmaker

#创建一个连接会话对象;

需要指定是和那个数据库引擎之间的会话

DBSession = sessionmaker(bind=engine)

# 接下来~就可以用过session会话进行数据库的数据操作了,实例化

session =DBSession()

session的作用相当于sql语句里面的游标

3、ORM操作对象

3.1.基础类

#引入模块

from sqlalchemy.ext.declarative import declarative_base

# 创建基础类

base = declarative_base()

通过基础类将我们即将要处理的数据表信息和python的类映射到这些表上,建立映射关系(但是还没完成映射,这只是一个开始)

3.2.数据类型创建

#引入需要的模块
from sqlalchemy import Column, String, Integer
# 创建用户类型
class User(base):# 定义和指定数据库表之间的关联
    __tablename__='user'#表的结构
#定义表中的属性值,以下的属性就是代表数据库中的列
    id=Column(String(20),primary_key=True)#用column定义映射的列
    name=Column(String(20))
    age=Column(String(64))

3.3.数据类型映射操作

base.metadata.create_all(engine)

     通过类型对象的metadata可以实现和数据库之间的交互,当已经存在表的时候,这句话就不会再执行

3.4.数据对象处理

①增

#创建对象,实例化

new_user=User(name="王五",age="19")

session.add(new_user)

#提交

session.commit()

session.close()

批量添加

#批量添加

user_obj=[user(name="西谷",password='456'),

                user(name="北谷",password='567'),

                 user(name='西北谷',password='678')]

session.add_all(user_obj)

session.commit()

②查

User_name=session.query(user).filter(User.id=='1').one()

print('name:',user_name.name)

session.close()

批量查询

query_user=session.query(user).all()

for each in query_user:

        print(each.id)

        print(each.name)

        print(each.age)

③改

#先将数据查出来,然后再修改

change_user=session.query(user).filter(user.id=='1').update({user.name:"new北谷"})

session.commit()

session.close()

④删

delete_user=session.query(user).filter(user.name=='张三').delete()

session.commit()

session.close()

##批量添加 user_obj=[user(name="西谷",password='456'), user(name="北谷",password='567'), user(name='西北谷',password='678')] session.add_all(user_obj) session.commit()批量添加
user_obj=[user(name="西谷",password='456'),
           user(name="北谷",password='567'),
          user(name='西北谷',password='678')]

session.add_all(user_obj)

session.commit()

3ngine=creangine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)

engine=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)

engengine=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)ineengine=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)engine=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)ngine=create_engine("mysql+pymysql://root:root@localhost:3306/test",encoding='utf-8',echo=True)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值