关于python与mysql连接中的CRUD:增删改查

from sqlalchemy import create_engine,Column,Integer,String
from sqlalchemy.ext.declarative import declarative_base

#数据库的变量
host='localhost'
port=3306
data_base='flask_db'
user='root'
pwd='root'
db=f'mysql+pymysql://{user}:{pwd}@{host}:{port}/{data_base}'
engine=create_engine(db)  #创建引擎
base=declarative_base(engine)  ##创建一个基类,传递引擎

class Person(base):  #创建一个类,继承基类
    __tablename__='tuser'  #创建的表名id等
    id=Column(Integer,primary_key=True,autoincrement=True)
    name=Column(String(32))
    age=Column(Integer)
    country=Column(String(32))
# base.metadata.create_all()

from sqlalchemy.orm import sessionmaker  #导入创建session库
#创建session对象来操作数据
Session=sessionmaker(engine)
#创建生成一条数据
def create_data_one():
    with Session() as session:  #打开文件上下文操作
        #实例化 Person类 数据 赋给p1
        p1=Person(name='百战',age=6,country='北京')
        p2=Person(name='貂蝉',age=6,country='北京')
        session.add(p2)  #添加p1中的数据
        session.commit()  #提交

#创建生成多条数据
def create_data_all():
    with Session() as session:  #打开文件上下文操作
        #实例化 Person类 数据 赋给p1
        p2=Person(name='吕布',age=18,country='群雄')
        p3=Person(name='貂蝉',age=19,country='魏国')
        #添加多条数据,以列表的形式进行添加
        session.add_all([p2,p3])  #添加p2,p3中的数据
        session.commit()  #提交
#创建查询全部数据方法
def query_all():
    with Session() as session:
        #查询哪个类,这里输入Person类 all拿出所有数据
        person_all=session.query(Person).all()
        #列表进行遍历,并得到内容信息
        for p in person_all:
            print(p.name,p.id,p.country,p.age)
#创建查询第一条数据方法
def query_one():
    with Session() as session:
        #查询哪个类,这里输入Person类 all拿出所有数据
        p_one=session.query(Person).first()
        #获取第一条数据的名字
        print(p_one.name)

#创建通过过滤筛选查询方法
def filter_query():
    with Session() as session:
        # session.query(Person) 查询哪个类的表
        #通过哪一个参数进行过滤
        # filter=session.query(Person).filter_by(name='貂蝉').first()
        #通过类中的name属性进行判断,如果==貂蝉那么则获取
        filter=session.query(Person).filter(Person.age==18).first()
        print(filter.country)
#创建修改数据方法
def update():
    with Session() as session:
        # 获取Person中吕布的信息
        p1=session.query(Person).filter(Person.name=='吕布').first()
        p1.age=20  #对吕布的age信息进行修改
        #提交事务
        session.commit()
#删除数据方法
def delete():
    with Session() as session:
        #t通过过滤条件删除一条数据 每次修改删除添加都要进行提交
        p1=session.query(Person).filter(Person.country=='北京').first()
        session.delete(p1)
        session.commit()
#删除全部数据方法
def delete_all():
    with Session() as session:
        #获取Person类中的全部数据,p1对象是一个列表
        p1=session.query(Person).all()
        print(p1)
        #对p1对象进行遍历,进行删除提交 删除提交操作
        for i in p1:
            session.delete(p1)
            session.commit()
if __name__ == '__main__':
    # create_data_one() #创建一条数据
    # create_data_all() #创建多条数据
    # query_all()  #查询全部内容
    # query_one()  #查询一条内容
    # filter_query()  #筛选查询内容
    # update()  #修改内容
    # delete()  #删除数据
    delete_all()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值