zoukankan      html  css  js  c++  java
  • 利用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)外键关联

    多外键关联:

     


    多对多模式例子:

     

     

     



  • 相关阅读:
    数据库生成说明
    Android 的 SurfaceView 双缓冲应用
    一些and知识 和ui
    weibo11
    android总结
    weibo14
    weibo9
    weibo12
    weibo10
    在线人数的统计
  • 原文地址:https://www.cnblogs.com/chenxiaozan/p/12683179.html
Copyright © 2011-2022 走看看