當前位置:
首頁 >
根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...
發布時間:2025/3/19
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.SQLALchemy使用
- 安裝
- SQLAlchemy是Python編程語言下的一款開源軟件,是PythonSQL工具包和對象關系映射器,它為應用程序開發人員提供了SQL的全部功能和靈活性
2.什么是ORM
- ORM(Object Relational Mapper)就是把數據庫表的行與相應的對象建立關聯,互相轉換;
- 目前,最知名的Python ORM是SQLAlchemy和SQLobject;
3.數據庫操作
- 創建表使用create_all()方法,刪除表使用drop_all()方法,我們一起來看一下如何創建和刪除表
我們現在命令工具中查看一下數據庫中有沒有我們想要的teacher表,上一篇文章中講過,先登錄mysql:mysql -uzengzeng -p123456,然后進入我們要使用的數據庫:use XKD_Python_Course,我們先通過:show tables;查看一下數據庫中的表,發現沒有teacher表
那現在就可以執行代碼,創建數據庫了,創建好后我們可以在命令行查看一下:show tables;,發現teacher表已經存在了,創建表成功yes!
想要刪除剛剛創建的表,可以使用drop_all()方法,執行代碼,再查看數據庫表,就可以看teacher表已經被刪除了
Base.metadata.drop_all(engine)- 插入數據使用session.add_all()方法;
我們執行代碼,然后去命令工具查看一下表是否插入數據:select * from teacher;
插入數據- 查詢操作使用session.query()方法,迭代查詢;
- 修改操作:session.update();
where條件查詢
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DATE, Enum, ForeignKey import enum from sqlalchemy.orm import sessionmaker Base = declarative_base() class My_Enum(enum.Enum):M = 'M'F = 'F'# 實體類 class Emploee(Base):'''+------------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+------------+---------------+------+-----+---------+-------+| emp_no | int(11) | NO | PRI | NULL | || birth_date | date | NO | | NULL | || first_name | varchar(14) | NO | | NULL | || last_name | varchar(16) | NO | | NULL | || gender | enum('M','F') | NO | | NULL | || hire_date | date | NO | | NULL | |+------------+---------------+------+-----+---------+-------+'''__tablename__ = 'employees'emp_no = Column(Integer, primary_key=True, nullable=False)birth_date = Column(DATE, nullable=False)first_name = Column(String(14), nullable=False)last_name = Column(String(16),nullable=False)gender = Column(Enum(My_Enum), nullable=False)hire_date = Column(DATE, nullable=False)def __repr__(self):return "emp_no='%s', birth_date='%s', first_name='%s', last_name='%s', gender='%s', hire_date='%s'" % (self.emp_no, self.birth_date, self.first_name, self.last_name, self.gender, self.hire_date)__str__ = __repr__# 創建連接引擎 host = 'localhost' port = 3306 username = 'zengzeng' password = '123456' db = 'XKD_Python_Course' conn_str = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(username, password, host, port,db) engine = create_engine(conn_str, echo=False)# 創建表 Base.metadata.create_all(engine)# 創建會話,用于提交數據 Session = sessionmaker(bind=engine) session = Session()# # 簡單的where條件查詢過濾, 返回可迭代對象, AND 取與 emploees = session.query(Emploee).filter(Emploee.emp_no < 10010).filter(Emploee.gender == 'M') emploees = session.query(Emploee).filter((Emploee.emp_no > 10010) & (Emploee.gender == 'F'))# OR 取并 emploees = session.query(Emploee).filter((Emploee.emp_no > 10010) | (Emploee.gender == 'F'))# NOT 取反 emploees = session.query(Emploee).filter(~(Emploee.emp_no > 10010))# in emploees = session.query(Emploee).filter(Emploee.emp_no.in_([10010, 10011, 10012]))# not in emploees = session.query(Emploee).filter(~Emploee.emp_no.in_([10010, 10011, 10012]))# like ,like可以忽略大小寫進行模式匹配 emploees = session.query(Emploee).filter(Emploee.last_name.like('B%'))for emploee in emploees:print(emploee)order排序
- asc():升序;
- desc():降序;
- 多字段排序:在語句里面進行多次排序;
聚合與分組
- list():轉化為列表;
- count():聚合count(*)查詢;
- all(): 轉化為列表;
- limit().one():查詢首行;
- max():返回最大值;
- min():返回最小值;
- avg():返回平均值;
- group_by():分組查詢;
參考:https://www.9xkd.com/user/plan-view.html?id=2415909403
總結
以上是生活随笔為你收集整理的根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: groovy怎样从sql语句中截取表名_
- 下一篇: sql order by 降序_数仓面试