2023年7月20日发(作者:)
sqlalchemy的基本⽤法简介SQLAlchemy是⽤Python编程语⾔开发的⼀个开源项⽬。它提供了SQL⼯具包和ORM(对象关系映射)⼯具,使⽤MIT许可证发⾏。SQLAlchemy最初在2006年2⽉发⾏,发⾏后便很快的成为Python社区中最⼴泛使⽤的ORM⼯具之⼀,丝毫不亚于Django⾃带的ORM框架。SQLAlchemy采⽤简单的Python语⾔,提供⾼效和⾼性能的数据库访问,实现了完整的企业级持久模型。它的理念是,SQL数据库的量级和性能⽐对象集合重要,⽽对象集合的抽象⼜重要于表和⾏。基本⽤法安装安装sqlalchemypip3 install sqlalchemypip3 install pymysql本⽂使⽤MySQL作为数据库,使⽤pymysql作为驱动,因此需要安装pymysql连接数据库配置信息在连接数据库前,需要使⽤到⼀些配置信息,然后把它们组合成满⾜以下条件的字符串:dialect+driver://username:password@host:port/databasedialect:数据库,如:sqlite、mysql、oracle等driver:数据库驱动,⽤于连接数据库的,本⽂使⽤pymysqlusername:⽤户名password:密码host:IP地址port:端⼝database:数据库HOST = 'localhost'PORT = 3306USERNAME = 'root'PASSWORD = '123456'DB = 'myclass'# dialect + driver://username:passwor@host:port/databaseDB_URI = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}'建议将配置信息放到你的配置⽂件中,如创建引擎并连接数据库from sqlalchemy import create_enginefrom config import DB_URIengine = create_engine(DB_URI) # 创建引擎conn = t() # 连接result = e('SELECT 1') # 执⾏SQLprint(ne())
() # 关闭连接创建ORM模型并映射到数据库中from ative import declarative_basefrom sqlalchemy import create_engine, Column, Integer, Stringfrom import sessionmakerfrom config import DB_URIengine = create_engine(DB_URI)Base = declarative_base(engine) # SQLORM基类session = sessionmaker(engine)() # 构建session对象class Student(Base): __tablename__ = 'student' # 表名 id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(50)) age = Column(Integer) sex = Column(String(10))_all() # 将模型映射到数据库中执⾏上⾯代码,将会在数据库中⽣成对应的映射表student。新增数据创建表后,接下来我们要添加数据,代码如下:student = Student(name='Tony', age=18, sex='male') # 创建⼀个student对象(student) # 添加到() # 提交到数据库也可以批量添加数据:_all([ Student(name='Jane', age=16, sex='female'), Student(name='Ben', age=20, sex='male')])()查询数据sqlalchemy提供了query()⽅法来查询数据获取所有数据item_list = (Student).all()print(item_list)for item in item_list: print(, )执⾏结果如下[
# ('Tony',)使⽤filter()⽅法进⾏筛选过滤item_list = ().filter( >= 18).all()print(item_list)# [('Tony',), ('Ben',)]使⽤order_by()进⾏排序item_list = (, ).order_by(()).all() # desc()表⽰倒序print(item_list)# [('Ben', 20), ('Tony', 18), ('Jane', 16)]多个查询条件(and和or)# 默认为and, 在filter()中⽤,分隔多个条件表⽰anditem_list = (, , ).filter( >= 10, == 'female').all()print(item_list) # [('Jane', 16, 'female')]from sqlalchemy import or_# 使⽤or_连接多个条件item_list = (, , ).filter( or_( >= 20, == 'female')).all()print(item_list) # [('Jane', 16, 'female'), ('Ben', 20, 'male')]equal/like/in# 等于item_list = (, , ).filter( == 18).all()print(item_list) # [('Tony', 18, 'male')]# 不等于item_list = (, , ).filter( != 18).all()print(item_list) # [('Jane', 16, 'female'), ('Ben', 20, 'male')]# likeitem_list = (, , ).filter( ('%To%')).all()print(item_list) # [('Tony', 18, 'male')]# initem_list = (, , ).filter( _([16, 20])).all()print(item_list) # [('Jane', 16, 'female'), ('Ben', 20, 'male')]count计算个数count = (Student).count()print(count) # 3切⽚item_list = ().all()[:2]print(item_list) # [('Tony',), ('Jane',)]修改数据修改数据可以使⽤update()⽅法,update完成后记得执⾏()# 修改Tony的age为(Student).filter( == 'Tony').update({'age': 22})()item = (, ).filter( == 'Tony').first()print(item)
执⾏结果如下('Tony', 22)删除数据删除数据使⽤delete()⽅法,同样也需要执⾏()提交事务# 删除名称为Ben的数据(Student).filter( == 'Ben').delete()()item_list = (, ).all()print(item_list)执⾏结果如下[('Tony', 22), ('Jane', 16)]
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689824780a288922.html
评论列表(0条)