超好用的SQLAlchemy

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 超好用的SQLAlchemy

超好用的SQLAlchemy

SQLAlchemy是一个python语言实现的的针对关系型数据库的orm库。 可用于连接大多数常见的数据库,比如Postgresql、MySQL、SQLite、Oracle等。


使用感受


我自己是从PyMysql+MySQL过渡到SQLAlchemy+Posygresqls。MySQL过渡到Posygresqls这里暂且不提,友友们可以根据自己的需求使用。单就SQLAlchemy来说最大的感受就是简单,灵活,代码量少。两个字:舒服!


优点


**

1.可读性:ORM以最简单的形式建模数据。表的字段就是这个类的成员变量,ORM使数据库结构文档化、可视度更高。

2.可用性:ORM的避免了繁琐、冗余、五花八门的SQL语句。简单灵活的接口方法极大的降低了学习成本,也降低了开发中的时间开销,提高了程序与数据库的友好性。

3.可维护性:SQLAlchemy的高度统一性保证了在数据表结构甚至数据库发生改变时,极大的减少了相应的代码修改。**


环境配置


pip install psycopg2 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

代码

main.py

from sqlalchemy import Column,Integer,String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()   #ORM模型
#数据库的表与此类对应起来。SQLAlchemy的核心就是通过类的映射来操作数据库表
class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)
engine = create_engine('postgresql://用户名:密码@localhost:5432/数据库名')  #创建数据库引擎
Base.metadata.create_all(engine)     #创建数据库
session= sessionmaker(engine)     #创建会话对象
dbsession=session()     #打开会话对象
'''增'''
#增加单个
def addOnly():
    dbsession.add(Person(id=10,name='小明'))
    dbsession.commit()
#增加多个
def addMang():
    lis=[]
    name_lis=['张','李','王','曾','徐']
    for i in range(5):
        lis.append(Person(id=i,name=name_lis[i]))
    dbsession.add_all(lis)
    dbsession.commit()
from sqlalchemy.sql import and_ , or_
'''删'''
def deletePersion():
    dbsession.query(Person).filter(and_(Person.id==10,Person.name=='小明')).delete()
    dbsession.commit()
'''查'''
def findPersion():
    for i in dbsession.query(Person).all():
        print(i.id,i.name)
'''改'''
def modifyPersion():
    dbsession.query(Person).filter(Person.id==1).update({'name':'aaaa'})
    dbsession.commit()
dbsession.close()


献上从数据库中导出表为orm模型代码“sqlacodegen”库

pip install sqlacodegen
sqlacodegen postgresql://用户名:密码@localhost:5432/数据库名 > model.py


献上数据库版本控制方法“alembic”库

pip install alembic

使用方法

alembic init alembic  #初始化

配置

alembic.ini
sqlalchemy.url = postgresql://用户名:密码@localhost:5432/数据库名


env.py

import os
import sys
# 把当前项目路径加入到path中
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import main
target_metadata = main.Base.metadata
alembic revision --autogenerate -m "first commit"  #提交版本
alembic upgrade head  #将新版本更新到数据库中
alembic downgrade 指定版本号  #降低版本


如有任何问题,欢迎在下方留言,谢谢!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 存储 Go
【译】SQLAlchemy文档:SQLAlchemy 统一教程
【译】SQLAlchemy文档:SQLAlchemy 统一教程
|
6月前
|
数据挖掘 数据处理 索引
Python 应知应会的Pandas高级操作
Python 应知应会的Pandas高级操作
97 0
|
前端开发 测试技术 人机交互
软件测试|超好用超简单的Python GUI库——tkinter(十四)
软件测试|超好用超简单的Python GUI库——tkinter(十四)
|
测试技术 数据安全/隐私保护 索引
软件测试|超好用超简单的Python GUI库——tkinter(五)
软件测试|超好用超简单的Python GUI库——tkinter(五)
软件测试|超好用超简单的Python GUI库——tkinter(五)
|
测试技术 人机交互 Python
软件测试|超好用超简单的Python GUI库——tkinter(四)
软件测试|超好用超简单的Python GUI库——tkinter(四)
软件测试|超好用超简单的Python GUI库——tkinter(四)
|
前端开发 测试技术 Python
软件测试|超好用超简单的Python GUI库——tkinter(十五)
软件测试|超好用超简单的Python GUI库——tkinter(十五)
|
编解码 测试技术 Python
软件测试|超好用超简单的Python GUI库——tkinter(十三)
软件测试|超好用超简单的Python GUI库——tkinter(十三)
|
关系型数据库 数据库连接 数据库
以两分钟了解Python之SQLAlchemy框架的使用
以两分钟了解Python之SQLAlchemy框架的使用
109 0
|
测试技术 Python 内存技术
软件测试|超好用超简单的Python GUI库——tkinter(十一)
软件测试|超好用超简单的Python GUI库——tkinter(十一)
|
测试技术 索引 Python
软件测试|超好用超简单的Python GUI库——tkinter(七)
软件测试|超好用超简单的Python GUI库——tkinter(七)