利用sqlalchemy(ORM框架)连接操作mysql_mysql

一、什么是ORM框架

object relational mapping,也就是对象映射关系程序,主要作用是用面向对象的形式转换原生sql,避免直接写死sql语言在代码当中

优点:隐藏了数据访问细节,通用数据库交互,ORM的核心,使得交互更贱简单异性,适用多种数据库类型。

缺点:进行sql转换,意味着映射和关联管理,会影响性能,但是现在各种ORM矿化适用lazyload,cache等有效减轻这块,效果明显。

二、最有名的ORM框架:SQLalchemy

1、不同的数据库类型和模块

根据配置文件的不同调用不同的数据库API,实现对数据库的操作

2、sqlalchemy操作mysql表

(1)创建表

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String

#创建引擎
engine=create_engine("mysql+pymysql://root:thinker@localhost/testdb?charset=utf8",echo=True) #echo=True执行时显示对应的sql

#生成orm基类
Base=declarative_base()

#表类
class User(Base):
__tablename__='user' #表名
id=Column(Integer,primary_key=True)
name=Column(String(32),nullable=False)
password=Column(String(64))
  def __repr__(self):  #表现打印格式
  return "<%s,%s>"%(self.name,self.password)

#创建表结构
Base.metadata.create_all(engine)

(2)创建数据
注:这里需要将(1)中的表结构和engine一起带上,会需要用到
from sqlalchemy.orm import sessionmaker

#创建会话连接
Session=sessionmaker(bind=engine) #创建与数据库的会话,返回的是类
session=Session() #类的实例化

user_obj=User(name='chen',password='123') #生成你要创建的对象
session.add(user_obj) #将要创建的数据对象添加到session中,一会commit统一创建
session.commit() #提交创建

 (3)查询数据

user_obj=session.query(User).filter(User.name=="chen").all() #all取出所有
user_obj=session.query(User).filter(User.name=="chen").first() #取出第一个
print(user_obj) #返回列表

(4)修改数据

先查询出来,然后直接赋值

user_obj=session.query(User).filter(User.name=="chen").first()
user_obj.name='fortest'
user_obj.password='fortest'
session.commit()

(5)删除数据
先查询出来,然后直接删除
user_objs=session.query(User).filter(User.name=="chen").all()
for i in user_objs:
session.delete(i)
session.commit()

(6)分组与统计
统计:
user_objs=session.query(User).filter(User.name=='chen').count()
print(user_objs)
分组:
group_by

(7)连接查询
(8)外键关联

多外键关联:

 


多对多模式例子:

 

 

 



猜你喜欢

转载自www.cnblogs.com/chenxiaozan/p/12683179.html