Python ORM框架来操作MySQL (SQLAlchemy)

运行出现错误可能需要下载https://dev.mysql.com/downloads/connector/python/

# Python ORM框架来操作MySQL SQLAlchemy
# pip install sqlalchemy
# 初始化数据库连接
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,create_engine,Integer,FLOAT
# 初始化数据库连接,修改为你的数据库用户名和密码
engine = create_engine('mysql+mysqlconnector://root:186373@localhost:3306/sqlfirst')
# 创建模型
Base=declarative_base()
class Player(Base):
    __tablename__='player'
    player_id=Column(Integer,primary_key=True,autoincrement=True)
    team_id=Column(Integer)
    player_name=Column(String(255))
    height=Column(FLOAT(3,2))

#创建DBSession类型
DBSession=sessionmaker(bind=engine)
# 创建session对象
session=DBSession()
'''
# 创建player对象
new_player=Player(team_id=1003,player_name='约翰 - 科林斯',height=2.08)
# 添加到session
session.add(new_player)
# 提交即保存到数据库
session.commit()
# 关闭session
session.close()
'''

#  实现查找数据
def to_dict(self):
    return {c.name:getattr(self,c.name,None) for c in self.__table__.columns}
# 将对象可以转化未dict类型
Base.to_dict=to_dict
# 查询身高 >=2.08 的球员有哪些
rows=session.query(Player).filter(Player.height>=2.08).all()
# 查询身高 ≥ 2.08,同时身高 ≤ 2.10 的球员
rows=session.query(Player).filter(Player.height>=2.08, Player.height <=2.10).all()
print([row.to_dict() for row in rows])
# 按照 team_id 进行分组,同时筛选分组后数据行数大于 5 的分组,并且按照分组后数据行数递增的顺序进行排序,显示 team_id 字段,以及每个分组的数据行数。

from sqlalchemy import func
rows=session.query(Player.team_id,func.count(Player.team_id)).group_by(Player.team_id).having(func.count(Player.team_id)>5).order_by(func.count(Player.player_id).asc()).all()
print(rows)

# 删除
row=session.query(Player).filter(Player.player_name=='约翰 - 科林斯').first()
session.delete(row)
session.commit()
session.close()
#  修改
row = session.query(Player).filter(Player.player_name=='索恩-马克').first()
row.height=2.17
session.commit()
session.close()

更多参考

https://www.liaoxuefeng.com/wiki/1016959663602400/1017803857459008

官方使用链接

https://docs.sqlalchemy.org/en/13/orm/tutorial.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金融小白数据分析之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值