1.ORM介绍:
1、对开发人员的要求比较高
2、开发比较繁琐,sql命令的问题
3、不利于数据库切换
ORM:数据库映射关系。将python语句转义成sql语句和数据库交互
1、使用方便
2、执行效率下降
2.Python的ORM_sqlalchemy
Sqlalchemy 是python最为常用的三方ORM模块,Flask和tornado在生产环境当中,大部分使 用sqlalchemy和数据库进行交互。
1.下载sqlalchemy模模块
2.创建数据库
3.用orm 对数据库进行增删改查操作
# 普通方法创建表
import sqlalchemy
# 链接数据库
# 数据库类型+操作数据库的模块://用户:密码@主机/数据库名
db = sqlalchemy.create_engine('mysql+pymysql://root:1111@localhost/school')
meta = sqlalchemy.MetaData(db) # 实例化数据库创建的元类
student = sqlalchemy.Table(
'student', # 表名
meta, # 关联数据库链接
sqlalchemy.Column("name", sqlalchemy.String(32)), # 字段的描述
sqlalchemy.Column("age", sqlalchemy.Integer),
sqlalchemy.Column("gender", sqlalchemy.String(32)),
sqlalchemy.Column("project", sqlalchemy.String(32))
)
meta.create_all()
# 面向对象方法创建表
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
db = sqlalchemy.create_engine('mysql+pymysql://root:1111@localhost/school')
base = declarative_base(db) # 实例化数据库创建的元类
class User(base):
__tablename = "user"
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32))
age = sqlalchemy.Column(sqlalchemy.Integer)
gender = sqlalchemy.Column(sqlalchemy.String(32))
project = sqlalchemy.Column(sqlalchemy.String(32))
if __name__ == '__main__':
base.metadata.create_all(db)
1.增加数据
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=db) # 绑定一个查询实例
session = Session() # 进行实例化
# 添加一个数据
user = User(
id=1,
name="老张",
age=17,
project="go"
)
# 添加多个数据
session.add_all([
User(name="老边", age=18, gender="女", project="python"),
User(name="老李", age=19, gender="女", project="java"),
User(name="老王", age=20, gender="男", project="PHP"),
User(name="老赵", age=21, gender="男", project="c"),
])
session.commit()
2.查找数据
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=db) # 绑定一个查询实例
session = Session() # 进行实例化
1.查找所有
all_data = session.query(User).all() # 查找指定表的所有数据
2.按条件查询
all_data = session.query(User).filter_by(gender = "男") # 按条件查询
for data in all_data:
print(data.name)
3.get 查询
data = session.query(User).get(ident=1) # get 条件必须是唯一的
print(data.id,data.name)
3.修改数据:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=db) # 绑定一个查询实例
session = Session() # 进行实例化
data = session.query(User).get(ident=1) # get 条件必须是主键
data.age = 50 # 将id 为1的年龄修改为50
print(data.age)
session.commit() # 提交数据
4.删除数据:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=db) # 绑定一个查询实例
session = Session() # 进行实例化
data = session.query(User).get(ident=1) # get 条件必须是主键
data = session.delete(data)
session.commit()
注意:添加 修改 删除 等对数据库做出修改的操作,一定要提交修改给数据库 commit