python中数据库的 ORM 操作

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

猜你喜欢

转载自blog.csdn.net/weixin_43567965/article/details/88929057