SQLAlchemy是Python编程语言下的开源软件,提供了SQL工具包和对象关系映射(ORM)工具,在MIT许可下发布。SQLAlchemy于2006年2月首次发布,并迅速成为Python社区中使用最广泛的ORM工具之一,不亚于Django的ORM框架。本文将介绍如何使用SQLAlchemy操作MySQL完成基本的建表、表数据增、查、改、删(CRUD)等操作。首先,我们需要确认当前Python环境中已经安装了sqlalchemy和pymysql模块。新建一张表我们使用本地的MySQL数据库,数据库为orm_test。创建一个包含字段id、name、age、place的新用户表。完整的Python代码(create_table.py)如下:#-*-coding:utf-8-*-#author:Jclian91#place:海南三亚#time:12:46fromsqlalchemy.dialects.mysqlimportINTEGER,VARCHARfromsqlalchemyimportColumnfromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_baseBase=declarative_base()#用户表结构classUsers(Base):__tablename__='users'id=Column(INTEGER,primary_key=True)name=Column(VARCHAR(256),nullable=False)age=Column(INTEGER)place=Column(VARCHAR(256),nullable=False)def__init__(self,id,name,age,place):self.id=idself.name=nameself.age=ageself.place=placeefinit_db():engine=create_engine("mysql+pymysql://root:@localhost:3306/orm_test",encoding="utf-8",echo=True)Base.metadata.create_all(engine)print('Createtablesuccessfully!')if__name__=='__main__':init_db()运行后,生成的users表结构如下:数据插入然后插入几条测试数据a、完整代代码(db_insert.py)如下:#-*-coding:utf-8-*-#author:Jclian91#place:海南三亚#time:12:52fromcreate_tableimportUsersfromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerdefinsert_data():#初始化数据库连接engine=create_engine("mysql+pymysql://root:@localhost:3306/orm_test",encoding="utf-8")#创建DBSessiontypeDBSession=sessionmaker(bind=engine)#创建会话对象session=DBSession()#插入单条数据#创建一个新的User对象new_user=Users(id=1,name='Jack',age=25,place='USA')#添加到会话session.add(new_user)#提交保存到数据库session.commit()#插入多条数据user_list=[Users(id=2,name='Green',age=26,place='UK'),Users(id=3,name='Alex',age=31,place='GER'),Users(id=4,name='Chen',age=52,place='CHN'),Users(id=5,name='Zhang',age=42,place='CHN')]session.add_all(user_list)session.commit()#关闭会话session.close()print('insertintodbsuccessfully!')if__name__=='__main__':insert_data()运行程序后,表中的数据如下:数据查询接下来,我们将演示如何进行简单的查询我们需要查询地点为CHN的人的姓名。完整的Python代码(db_query)如下:#-*-coding:utf-8-*-#author:Jclian91#place:海南三亚#time:12:52fromcreate_tableimportUsersfromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerdefquery_data():#初始化数据库连接engine=create_engine("mysql+pymysql://root:@localhost:3306/orm_test",encoding="utf-8")#创建DBSessiontypeDBSession=sessionmaker(bind=engine)#创建一个会话对象session=DBSession()#查询所有位置为CHN的名字#创建一个Query查询,filter是where条件#调用one()返回唯一的行,如果调用all(),则返回所有行:users=session.query(Users).filter(Users.place=='CHN').all()print([use.nameforuseinusers])#Output:['Chen','Zhang']#或者使用以下查询)]session.close()if__name__=='__main__':query_data()输出结果如下ows:['Chen','Zhang'][('Chen',),('Zhang',)]数据更新接下来我们演示数据更新。我们需要将Jack的位置更改为CHN。完整的Python代码(db_update)如下:#-*-coding:utf-8-*-#author:Jclian91#place:海南三亚#time:12:52fromcreate_tableimportUsersfromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerdefupdate_data():#初始化数据库连接engine=create_engine("mysql+pymysql://root:@localhost:3306/orm_test",encoding="utf-8")#创建DBSessiontypeDBSession=sessionmaker(bind=engine)#创建会话对象session=DBSession()#数据更新,将Jack的位置改为CHNupdate_obj=session.query(Users).filter(Users.name=='Jack').update({"place":"CHN"})session.commit()session.close()print("更新数据成功!")if__name__=='__main__':update_data()更新后的表数据如下:数据删除continue我们演示数据删除。我们需要删除杰克的记录。完整的Python代码(db_delete.py)如下:#-*-coding:utf-8-*-#author:Jclian91#place:海南三亚#time:12:52fromcreate_tableimportUsersfromsqlalchemyimportcreate_enginefromsqlalchemy。ormimportsessionmakerdefdelete_data():#初始化数据库连接engine=create_engine("mysql+pymysql://root:@localhost:3306/orm_test",encoding="utf-8")#创建DBSessiontypeDBSession=sessionmaker(bind=engine)#创建session对象session=DBSession()#数据更新,删除Jack的记录update_obj=session.query(Users).filter(Users.name=='Jack').delete()session.commit()session.close()print("删除数据成功!")if__name__=='__main__':delete_data()运行程序后,表中数据如下:本次分享到此结束,感谢阅读~本文的示例代码已上传至Github,网址为https://github.com/percent4/O...。
