sqlalchemy 从零到一的使用流程(python+sqlite)

1.安装环境

pip install SQLAlchemy

2.使用orm方式创建表格

`from sqlalchemy import MetaData
from sqlalchemy import Table
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import create_engine

`

2.1 初始化数据库

echo参数为True时,会显示每条执行的SQL语句,可以关闭,
create_engine()返回一个Engine的实例,并且它表示通过数据库语法处理细节的核心接口,在这种情况下,数据库语法将会被解释成python的类方法。

`
from sqlalchemy import create_engine

engine = create_engine('sqlite:///mydb.sqlite', echo=True)
`
mysql 的连接示例: engine = create_engine('mysql://fxq:123456@192.168.100.101/sqlalchemy', echo=True)

解释说明:
mysql://fxq:123456@192.168.100.101/sqlalchemy
mysql: 指定是哪种数据库连接
第一个fxq: 用户名
123456: fxq用户对应的密码
192.168.100.101: 数据库的ip
sqlalchemy: 数据库需要连接库的名字

2.2 创建表格

`

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String

engine = create_engine('mysql+pymysql://fxq:123456@192.168.100.101/sqlalchemy')
metadata = MetaData(engine)

student = Table('student', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50), ),
Column('age', Integer),
Column('address', String(10)),
)

metadata.create_all(engine)
`

MetaData类主要用于保存表结构,连接字符串等数据,是一个多表共享的对象
metadata = MetaData(engine) #绑定一个数据源的metadata
metadata.create_all(engine) #是来创建表,这个操作是安全的操作,会先判断表是否存在。

2.3 运行python文件在对应数据库中生成表

3 操作数据库的增删改查

3.1 创建回话

`
from sqlalchemy.orm import sessionmaker

DBSession = sessionmaker(bind=engine)
session = DBSession()
`

3.2 使用回话 增删改查

add示例

student1 = Student(id=1001, name='ling', age=25, address="beijing")
student2 = Student(id=1002, name='molin', age=18, address="jiangxi")
student3 = Student(id=1003, name='karl', age=16, address="suzhou")

session.add_all([student1, student2, student3])
session.commit()
session.close()
**查询示例 **
my_stdent = session.query(Student).filter_by(name="fengxiaoqing2").first()
print(my_stdent)
print(my_stdent.id,my_stdent.name,my_stdent.age,my_stdent.address)
更新操作示例
my_stdent = session.query(Student).filter(Student.id == 1002).first()
my_stdent.name = "fengxiaoqing"
my_stdent.address = "chengde"
session.commit()
student1 = session.query(Student).filter(Student.id == 1002).first()
print(student1.name, student1.address)
删除示例
session.query(Student).filter(Student.id == 1001).delete()
session.commit()
session.close()
其他函数应用示例 统计、分组、排序
统计name中包含‘feng’的数量
session.query(Student).filter(Student.name.like("%feng%")).count()
按照age分组
std_group_by = session.query(Student).group_by(Student.age)
按照id desc(倒序)排列
std_ord_desc = session.query(Student).filter(Student.name.like("%feng%")).order_by(Student.id.desc()).all()

4.参考博客

作者:俊采星驰_87e0
链接:https://www.jianshu.com/p/0ad18fdd7eed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2022-02-23 14:45  mlj0503  阅读(823)  评论(0编辑  收藏  举报