**
一、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()