Python SqlAlchemy数据库持久化使用方法


SqlAlchemy版本:1.1.11
操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423


数据持久化是常用的开发技术。具体有点请参考百度百科:请点击

Python的数据库ORM框架是数据持久层框架。这只是其中一种框架,还有其他的框架,请参考

总的来说,在实际开发中,需要不停的对数据库进行连接和操作,最基本的就是连接数据库,然后通过sql语句进行增删改,提交事务,关闭连接。这当然是最入门的做法。性能也是最差的。
这时候就引入了数据持久层的方法。


本文介绍python中最流行的SQLAlchemy框架的使用。
安装:直接用pip install SQLAlchemy即可
使用方法:
创建链接:

from sqlalchemy import create_engine
engine=create_engine('sqlite:MyDB.sqlite3',echo=True)

这里写图片描述
这里的创建是告诉SQLAlchemy你的数据库文件的路径。这里sqlite:MyDB.sqlite3,py文件和MyDB.sqlite3是同一个目录下,如果不同目录,需要写上路径。
echo=False(True),在运行py文件的时候是不显示(显示)Sql执行情况。这个可以自己试试。
这里列出一系列的数据库链接方式:
这里写图片描述
例:

mysql://root:pass/test
root是用户名 pass密码 test数据库

明确了路径和相关的数据库名之后,就是建立会话。也可以理解为sql的游标

from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker(bind=engine)
session = DBSession()

然后就是创建对象类

from sqlalchemy.ext.declarative import declarative_base
Base=declarative_base()

因为持久化都是将数据库的字段转化成代码里面类的属性来表示的。

创建表

from sqlalchemy import create_engine,Column,String,Integer
class Mybase(Base):
	#表名
	__tablename__ ='mycars'
	#字段,属性
	myid=Column(String(50), primary_key=True)
	price=Column(String(50))

创建对象之后,但是在数据库里面还没生成该表。可以自定义一个方法:

def CreatDb():
	#创建表
	Base.metadata.create_all(engine)
def delDb():
	#删除表
	Base.metadata.drop_all(engine)

添加数据

dt=Mybase(myid='aaa',price="aaa")
session.add(dt)
session.commit()

修改数据

#根据新增后再修改
dt.price='aaaaa'
#提交数据库
session.commit()
#查找符合条件数据再修改,filter_by是一个list,first()表示第一个
ModifyDt=session.query(Mybase).filter_by(myid='asd').first()
#修改数据
ModifyDt.price='ccccc'
#提交数据库
session.commit()

查询数据
查询数据是用filter_by,上一代码就是查询后再修改数据。
如果多条件查询,使用多次filter_by即可

querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')
for i in querydt:
	print(i.myid)

全部代码:

from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

#建立链接
engine=create_engine('sqlite:Mydb.sqlite3',echo=False)
#建立会话
DBSession = sessionmaker(bind=engine)
session = DBSession()

Base=declarative_base()


class Mybase(Base):
	#表名
	__tablename__ ='mycars'
	#字段,属性
	myid=Column(String(50), primary_key=True)
	price=Column(String(50))

def CreatDb():
	#创建表
	Base.metadata.create_all(engine)
	
def delDb():
	#删除表
	Base.metadata.drop_all(engine)

#创建表	
CreatDb()

#添加数据
dt=Mybase(myid='aaa',price="aaa")
session.add(dt)
session.commit()

#修改数据
dt.price='aaaaa'
session.commit()

#查询后修改
ModifyDt=session.query(Mybase).filter_by(myid='asd').first()
ModifyDt.price='bbbb'
session.commit()

#多条件查询,这里注意的是filter_by和filter的区别,filter可以多表查询。比较运算符也不一样。filter必需带表名
querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')
for i in querydt:
	print(i.myid)

运算结果:
这里写图片描述

此外还有很多数据库操作。这个可以参考官方文档:请点击
注意:不同SqlAlchemy版本而且版本相差较大的,在语法上会有不同的区别。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中常用的持久化框架有pickle和SQLAlchemy。 Pickle是Python内置的模块,用于对象的序列化和反序列化。它可以将Python对象转换为字节流,并将字节流保存到文件中,也可以将字节流反序列化为Python对象。使用pickle可以方便地将Python对象保存到文件中,或通过网络发送到其他计算机。比如,可以使用pickle.dump()将数据序列化并保存到文件中,使用pickle.load()从文件中反序列化数据。这种方式适用于简单的数据持久化需求。 SQLAlchemy是一个功能强大的Python对象关系映射(ORM)框架,它建立在数据库API之上,并提供了一种将Python对象映射到数据库表的方式。通过SQLAlchemy,可以使用Python对象来操作数据库,而不需要直接编写SQL语句。它支持多种关系数据库,如MySQL、PostgreSQLSQLite等,并提供了丰富的API和查询语言,使得数据的持久化和查询变得更加方便。使用SQLAlchemy,可以定义Python类来表示数据库表,通过操作这些类来进行增删改查等操作。例如,可以使用SQLAlchemy定义一个User类,然后通过User类来访问数据库中的用户信息。 综上所述,Python中有多种持久化框架可供选择,具体选择哪种取决于项目需求和个人偏好。如果只需要简单地将数据保存到文件中,可以使用pickle;如果需要更复杂的数据库操作和对象关系映射功能,可以选择SQLAlchemy

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xy-Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值