python中数据库的 ORM 操作

本文介绍了ORM的基本概念,强调了其对开发人员的高要求和可能的效率下降。接着详细讲解了Python中广泛使用的ORM库sqlalchemy,包括如何下载模块、创建数据库以及如何进行增删改查操作。注意,在使用ORM对数据库进行修改时,必须提交commit以保存更改。

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

01、数据介绍数据整理全国各城市的《政府工作报告》文本,对“数字化政府”相关词汇中的所有词汇进行词频统计。计算在TF-IDF中引入包含时间维度的逆文本频率,参考刘文革等(2024)词汇词频处理,参考杨海生等(2020),计算地级市政府财政支出与全国财政支出比率,最终得到本文计量模型中使用的数字化政府建设指数。数据名称:地级市数字化政府建设指数数据年份:2007-2024年刘文革,耿景珠,杜明威.数“政”强贸:数字化政府建设与中国出口产品质量升级[J].数量经济技术经济研究,2024,41(06):67-87.杨海生,柳建华中山大学岭南学院,连玉君中山大学岭南学院,等.企业投资决策中的同行效应研究:模仿与学习[J].经济学(季刊),2020,19(04):1375-1400.02、数据指标数字化政府词汇:城市大脑 大数据发展管理局 大数据管理 大数据管理中心 大数据局 大数据战略 大数据中心 电子口岸 电子政务 电子签章 电子签名 电子政务外网 电子政务系统 互联网+政务服务 开放数据 可信身份认证 迁移上云 全网通办 市民云 数据共享交换 数据管理 数据管理中心 数据集聚 数据决策 数据开放 数据平台 数据驱动 数据融合 数据上云 数据社会 数据通 数据灾备中心 数据治理 数据中台 数据资源互通 数字化基础设施 数字化市场 数字化政府 数字社会 数字身份 数字生态 数字文化建设 数字乡村 数字协同 数字政府 数字政务一体化 通关数字化 网络通 网上政府 网上政府服务 微信城市 无线政务专网 无纸化通关 系统整合 信息资源共享平台 信息资源共享体系 一码通行 一网办 一网办结 一网通办 一云统揽 移动民生服务平台 移动政务 在线服务平台 在线政务服务 掌上办 掌上办公 掌上办事 政府机构微博 政府数字化 政府数字化转型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值