Fork me on GitHub

Python_sqlalchemy基本用法

HOST = 'localhost'
PORT = 3306
USERNAME = 'root'
PASSWORD = 'root'
DB = 'day59'
# dialect + driver://username:passwor@host:port/database
DB_URI = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}'

创作引擎并连接数据库,执行原生sql
from sqlalchemy import create_engine
engine=create_engine(DB_URI) #创建引擎
conn=engine.connect() #连接数据库
result=conn.execute('select * from userinfo') #执行sql
print(result.fetchall()) #打印执行结果
conn.close() #关闭连接

创建orm模型,并映射道数据库
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, Integer, String #导入各种里类型字段
#引入会话
from sqlalchemy.orm import sessionmaker
engine=create_engine(DB_URI) #创建引擎
Base=declarative_base(engine) #创建sql基类
session=sessionmaker(engine)() #构建session对象

1.创建数据库表

class Student(Base):
__tablename__='student'#表名
id=Column(Integer,primary_key=True,autoincrement=True) #自增长id
name=Column(String(50)) #姓名
age=Column(Integer) #年龄
sex=Column(String(50)) #性别

Base.metadata.create_all() #将模型映射到数据库中

2.新增数据

student=Student(name='Tony',age=18,sex='male') #创建一个student对象
session.add(student) #添加到session
session.commit() #提交到数据库
  • 2.1.批量添加数据
    session.add_all(
    [
    Student(name='Jane', age=16, sex='female'),
    Student(name='Ben', age=20, sex='male')
    ]
    )
session.commit() #批量添加数据

3.查询数据

item_list=session.query(Student).all()
print(item_list)
for item in item_list:
print(item.name)
print(item.age)
print(item.sex)
  • 3.1.查询指定列
item_list=session.query(Student.name).all()
print(item_list)
  • 3.2.查询指定列的数据第一行
item_list=session.query(Student.name).first()
print(item_list)
  • 3.3.使用filter()方法进行筛选过滤数据
item_list=session.query(Student.name).filter(Student.age>=18).all()
print(item_list)
  • 3.4.使用order_by()进行排序
item_list=session.query(Student.name,Student.age).order_by(Student.age.asc()).all() #asc升序,desc降序
print(item_list)
  • 3.5.多个查询条件
item_list=session.query(Student.name,Student.age,Student.sex).filter(Student.age>=18,Student.sex=='male').all() #and写法
print(item_list)
  • 3.6.使用or连接多个条件
from sqlalchemy import or_
item_list=session.query(Student.name,Student.age,Student.sex).filter(or_(Student.age>=18,Student.sex=='male')).all() #and写法
print(item_list)
  • 3.7.等于查询
item_list=session.query(Student.name,Student.age,Student.sex).filter(Student.age==18).all()
print(item_list)
  • 3.8.不等于查询
item_list=session.query(Student.name,Student.age,Student.sex).filter(Student.age!=18).all()
print(item_list)
#3.8like模糊查询
item_list=session.query(Student.name,Student.age,Student.sex).filter(Student.name.like('%To%')).all()
print(item_list)
  • 3.9. in查询
item_list = session.query(Student.name, Student.age, Student.sex).filter(Student.age.in_([16, 20])).all()
print(item_list)
#count统计个数
count=session.query(Student).count()
print(count)

4.修改更新数据(使用update()方法,update完成后记得执行session.commit())

item_list = session.query(Student).filter(Student.name=='Jane').update({'age':22})
session.commit()
print(item_list)

5.删除数据(使用delete方法,同样需要执行session.commit()提交事务)

session.query(Student).filter(Student.name=='Jane').delete()
session.commit()
item_list=session.query(Student.name,Student.age).all()
print(item_list)
posted @ 2022-05-15 18:41  橘子偏爱橙子  阅读(112)  评论(0编辑  收藏  举报