数据库之ORM框架

关系数据库有Mysql , Oracle , Sql Server等,操作数据库大致分为以下两钟方式:
1.直接使用数据库接口连接,在python中连接模块有:pymysql,sqlite3等。每次操作都需要打开/关闭 connection,频繁的操作造成了浪费,不科学。
2.通过ORM框架来操作数据库。对象-关系映射(Object/Relation Mapping)是随着面向对象软件开发的发展而产生的。

常用的ORM框架模块有SQLObject,Stom,Django的ORM ,SQLAlchemy
这里将介绍SQLAlchemy:高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
在这里插入图片描述
安装方式:

pip install SQLAlchemy

使用SQLAlchemy链接数据库实质上还是通过数据库接口实现链接的,所以还得安装数据库的接口模块,这里采用了Mysql数据库

pip install pymysql

电脑安装Mysql作为本地数据库,具体看网上教程。

来看一段解释:SQLAlchemy 连接数据库使用数据库连接池技术,原理在系统初始化时,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池,以供下一个请求访问。而连接的建立,断开都由连接池自身来管理。同时还可以设置连接池的参数来控制连接池中的初始连接数,上下限数,最大空闲时间等。

第一步:连接数据库:

#链接数据库
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:038875@localhost:3306/test',echo=True)
#用户名:root
#密码:038875
#数据库名:test
mysql+pymysql://root:038875@localhost:3306/test 中mysql指明数据库系统类型,pymysql是接口模块

echo=True 显示所有执行的SQL语句情况,相当于一个监视器,可以清楚的知道执行情况
pool_time=30 连接超时时间
pool_size=5 设置连接数
等等


第二步:创建表mytable

#创建数据表
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,DateTime
Base = declarative_base()

class mytable(Base):
    #表名
    __tablename__ = "mytable"

    #字段属性
    id = Column(Integer,primary_key = True)
    name = Column(String(50),unique = True)
    age = Column(Integer)
    birth = Column(DateTime)
    class_name = Column(String(50))
#创建数据表
Base.metadata.create_all(engine)

引入declarative_base模块,生成其对象base,再创建一个类mytable。一般表名和类名一致,所以__tablename__ = "mytable"可忽略。

第三步:创建对象

 #首先创建一个会话对象用于执行SQL语句
from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker(bind = engine)
session = DBSession()  

增加数据

new_data = mytable(name = "xianyu3",age = 10,birth="1996-10-01",class_name = "硕士2018班")
session.add(new_data)
session.commit()   #commit()用于提交数据到数据库中,有更新 添加操作就需要这一步
session.close()

更新数据

#更新数据 update()函数
#session.query(mytable).filter(mytable.id == 1).update({mytable.name : "lisi"})
#session.commit()   #commit()用于提交数据到数据库中,有更新 添加操作就需要这一步
#session.close()

查询

#查询全部数据
get_data = session.query(mytable).all()   #all()将查询数据以列表形式返回,first()返回第一个数据
for i in get_data:
    print(i.name)
session.close()

可以直接执行SQL语句

sql = "select * from mytable"
session.execute(sql)
session.close()

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值