当前位置:   article > 正文

Python + SQLAlchemy操作MySQL数据库(ORM)_sqlalchemy使用pymysql

sqlalchemy使用pymysql
一、sqlalchemy简介

SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM(对象关系映射)工具,使用MIT许可证发行。

SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。它的理念是SQL数据库的量级和性能比对象集合重要,而对象集合的抽象又重要于表和行。

二、sqlalchemy的使用
1、安装
  1. pip install pymysql
  2. pip install sqlalchemy
2、CRUD(Create Read Update Delete,增查改删)
  1. from sqlalchemy import create_engine #导入数据库引擎
  2. from sqlalchemy.ext.declarative import declarative_base #导入orm基础类
  3. from sqlalchemy import Column,Integer,String,DateTime #导入orm的列、数据类型
  4. from sqlalchemy.orm import sessionmaker #导入session(会话)生成器
  5. #1.创建一个orm的基础类
  6. Base = declarative_base()
  7. #2.创建数据库连接的引擎(数据库+数据库操作包://用户名:密码@数据库服务器地址:端口号/数据库名)
  8. engine = create_engine('mysql+pymysql://root:#####@localhost:3306/dbms')
  9. #3.将数据库连接引擎绑定到Base对象上
  10. Base.metadata.create_all(engine)
  11. #4.创建Session,绑定数据库引擎
  12. Session = sessionmaker(bind=engine)
  13. #5.创建Session对象(会话对象)
  14. session = Session()
  15. #6.声明ORM映射类,必须继承Base
  16. class Employee(Base):
  17. __tablename__ = "employee"
  18. id = Column(Integer,primary_key=True)
  19. name = Column(String(30))
  20. gender = Column(String(4))
  21. birthday = Column(DateTime)
  22. phone = Column(String(11))
  23. address = Column(String(50))
  24. def __init__(self,name,gender,birthday,phone,address):
  25. self.name = name
  26. self.gender = gender
  27. self.birthday = birthday
  28. self.phone = phone
  29. self.address = address
  30. #7.定义单表的CRUD函数
  31. #7.1 增加员工信息
  32. def insertEmployee(emp):
  33. try:
  34. session.add(emp)
  35. session.commit()
  36. except Exception as err:
  37. print("增加操作失败,%s" % err)
  38. session.rollback()
  39. return False
  40. else:
  41. return True
  42. finally:
  43. session.close()
  44. #7.2 删除员工信息
  45. def deleteEmployee(emp_id):
  46. try:
  47. emp_to_delete = session.query(Employee).filter_by(id=emp_id).first()
  48. if emp_to_delete:
  49. session.delete(emp_to_delete)
  50. session.commit()
  51. except Exception as err:
  52. print("删除操作失败,%s" % err)
  53. session.rollback()
  54. return False
  55. else:
  56. return True
  57. finally:
  58. session.close()
  59. #7.3 修改员工信息
  60. def updateEmployee(emp):
  61. try:
  62. emp_update = session.query(Employee).filter_by(id=emp.id).first()
  63. if emp_update:
  64. emp_update.name = emp.name
  65. emp_update.gender = emp.gender
  66. emp_update.birthday = emp.birthday
  67. emp_update.phone = emp.phone
  68. emp_update.address = emp.address
  69. session.commit()
  70. except Exception as err:
  71. print("修改操作失败,%s" % err)
  72. session.rollback()
  73. return False
  74. else:
  75. return True
  76. finally:
  77. session.close()
  78. #7.4 查询所有
  79. def findAllEmployee():
  80. try:
  81. res = session.query(Employee).all()
  82. except Exception as err:
  83. print("查询失败,%s" % err)
  84. else:
  85. return res
  86. finally:
  87. session.close()
3、使用unittest进行测试
  1. from src.com import MysqlUtils
  2. import unittest
  3. class TestORM(unittest.TestCase):
  4. def test_insert(self):
  5. emp = MysqlUtils.Employee('AA','男','2001-10-15','13578956589','宁夏银川')
  6. if(MysqlUtils.insertEmployee(emp)):
  7. print("增加成功")
  8. print("---------------------------------------")
  9. def test_delete(self):
  10. if(MysqlUtils.deleteEmployee(26)):
  11. print("删除成功")
  12. def test_update(self):
  13. emp = MysqlUtils.Employee('刘备','男','2024-11-11','18991758746','湖北宜昌');
  14. emp.id = 17
  15. if(MysqlUtils.updateEmployee(emp)):
  16. print("修改成功")
  17. def test_findAll(self):
  18. res = MysqlUtils.findAllEmployee()
  19. for i in res:
  20. print(i.id, i.name)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/521824
推荐阅读
相关标签
  

闽ICP备14008679号