python(sqlalchemy 模块 数据库链接池)

# pip install pymysql
# pip install SQLAlchemy


########### 连接数据库sqlalchemy支持多种数据库
from sqlalchemy import create_engine

engine = create_engine(
    #####连接mysql,用python的pysqml库去连接
    ####用户名:密码:
        "mysql+pymysql://root:Sooele0000%@localhost:3306/test?charset=utf8",
        echo=True)
# echo=True:用于显示SQLAlchemy在操作数据库时所执行的SQL语句情况,
# 相当于一个监视器,可以清楚知道执行情况。

############ 创建数据表
from sqlalchemy import Column, Integer, String, DateTime 
# 常用数据类型

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Mytable(Base):
    # 表名
    __tablename__ ="mytable"
    # 字段,属性
    id = Column(Integer, primary_key=True)
    name = Column(String(10), unique=True)
    age = Column(Integer)

Base.metadata.create_all(engine)

############## 删除表
Base.metadata.drop_all(engine)

# 添加数据,创建一个会话对象,用于执行SQL语句
#####链接保持,不能注释
from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker(bind = engine)
session = DBSession()
#######
new_data = Mytable(name='John', age=10)
session.add(new_data)
session.commit()
session.close()

# 更新数据
# 使用update更新
session.query(Mytable).filter_by(id=1).update({Mytable.age:12})
session.commit()
session.close()

# 使用赋值方式更新
get_data = session.query(Mytable).filter_by(id=1).first()
get_data.age = 14
session.commit()
session.close()

# 查询所有数据
# select * from mytable;
get_data = session.query(Mytable).all()
for i in get_data:
    print(f'我的名字:{i.name}')
    print(f'我的年龄:{i.age}')
session.close()

# 设置筛选条件
get_data = session.query(Mytable.name, Mytable.age).filter_by(id=1).all()
for i in get_data:
    print(f'我的名字:{i.name}')
    print(f'我的年龄:{i.age}')
session.close()

# 多条件查询
# and
get_data = session.query(Mytable.name, Mytable.name).filter(Mytable.id>2, Mytable.name=='Tango').first()

# or
from sqlalchemy import or_
session.query(Mytable).filter(or_(Mytable.id>2, Mytable.name=='Tango')).all()

# 多表 join
# join为内连,如果需要使用外连把join换成outerjoin就好
get_data = session.query(Mytable).join(Mytable2).filter(Mytable.id>=2).all()

# 直接执行SQL语句
sql = "select * from mytable "
session.excute(sql)
session.commit()

 

用法具体:

https://www.cnblogs.com/pangguoping/p/5720322.html