数据库的ORM操作

**

一、ORM介绍

**
Python可以通过pymysql操作mysql数据库,它对开发人员的要求比较高,开发比较繁琐sql命令的问题,不利于数据库的切换;而ORM是数据库映射关系,将Python语句转义成sql语句和数据库交互,这样一来使用更加方便,但是执行效率却会下降。

**

二、Python的ORM_sqlalchemy

**
sqlalchemy是python最为常用的三方ORM模块,Flask和tornado在生产环境当中,大部分使用sqlalchemy和数据库进行交互。
首先我们下载这个第三方模块,命令行输入pip install sqlalchemy

(1)命令行创建一个表
用数据库方法写:create table tbi (id int primary key auto_increment)

(2)用python方法创建表

	```
	import sqlalchemy
	#
	# 链接数据库
	db=sqlalchemy.create_engine("mysql+pymysql://root:1234@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()
	```

注:这段代码在运行的时候会出现字符集的警告,没事,忽略它,数据库的列表已经创建成功

(3)上面的代码好像不够python,我们再来写一个面向对象版本的表

import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
# 链接数据库
db=sqlalchemy.create_engine("mysql+pymysql://root:1234@localhost/school")
# 数据库类型+操作数据库模块://用户:密码@主机/数据库名称
base =declarative_base(db)
class User(base):
    __tablename__="student"
    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))
class Shopping(base):
    __tablename__="teacher"
    id =sqlalchemy.Column(sqlalchemy.Integer,primary_key=True)
    name =sqlalchemy.Column(sqlalchemy.String(32))
    age=sqlalchemy.Column(sqlalchemy.Integer)
    getder=sqlalchemy.Column(sqlalchemy.String(32))
    project=sqlalchemy.Column(sqlalchemy.String(32))

if __name__ == '__main__':
    base.metadata.create_all(db)

这样看起来是不是舒服多了。

(4)然后在向建好的表中的字符段添加数据

# 对表内数据进行增
# 插入数据
from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=db)  # 绑定一个查询实例
session = Session()  # 进行实例化

session.add_all([
    Shopping(name="老张", age=18, gender="男", project="python"),
    Shopping(name="老王", age=18, gender="男", project="python"),
    Shopping(name="老李", age=18, gender="男", project="python"),
    Shopping(name="老赵", age=18, gender="男", project="python"),

])
session.commit()

(5)删
# 删

data =session.query(User).get(ident=1)#get条件必须是住建
session.deleted(data)
session.commit()

(6)改
# 改
data = session.query(User).get(ident=1)#get条件必须是主键
data.name=“老马”
session.commit()

(7)查
# 查
from sqlalchemy.orm import sessionmaker

Session=sessionmaker(bind=db)#绑定一个查询实例
sess=Session()#进行实例化

all_data=session.query(User).all()#查询指定表的所有数据
all_data=session.query()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值