zoukankan      html  css  js  c++  java
  • MySQL之ORM

    MySQL之ORM 

    返回首页

    ORM

      - 作用:
        1. 提供简单的规则
        2. 自动转换成SQL语句

      - DB first: 手动创建数据库以及表 -> ORM框架 -> 自动生成类
      - code first: 手动创建类、和数据库 -> ORM框架 -> 自动生成表

      - 功能
        - 创建数据库表
        - 连接数据库(非SQLAlchemy,pymyql,mysqldb,....)
        - 类转换SQL语句
        - 操作数据行
          增
          删
          改
          查

        - 便利的功能

    创建单表:

    class UserType(Base):
      __tablename__ = 'usertype'
      id = Column(Integer,primary_key=True,autoincrement=True)
      title = Column(String(32),nullable=True,index=True)


    class
    User(Base): __tablename__ = 'users' id = Column(Integer,primary_key=True,autoincrement=True) name = Column(String(32),nullable=True,index=True) age = Column(String(16),unique=True)
       user_type_id = Column(Integer,ForeignKey('usertype.id'))
      
      __table_args_ = (
        UniqueConstraint('id','name',name='uix_id_name'),
        Index('ix_id_name','name','id')
      )

    连接mysql数据库:

    engine = create_engine('mysql+pymysql://数据库用户名:密码@主机IP:3306/数据库名?charset=utf8',max_overflow=5)
    Base.metadata.create_all(engine)

     删除操作:

    Base.metadata.drop_all(engine)

     数据行增操作:

    engine = create_engine('mysql+pymysql://数据库用户名:密码@主机IP:3306/数据库名?charset=utf8',max_overflow=5)
    Session = sessionmaker(bind=engine)
    session = Session()
    #类->表,对象->行
    obj1 = UserType(title='普通用户')
    session.add(obj1)

    # 添加多条数据
    objs = [
      UserType(title='超级用户'),
      UserType(title='白金用户'),
      UserType(title='黑金用户'),
    ] session.add_all(objs)
    session.commit() session.close()

    数据行查操作: 

    user_type_list = session.query(UserType).all()
    user_type_list = session.query(UserType).filter(UserType.id>2)
    user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2)
    for row in user_type_list:
      print(row.id,row.title)

     数据行删操作:

    user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).delete()

    数据行改操作: 

    user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).update({'title':'黑金'})
    user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id>2).update({UserType.title:UserType.title + "X"}, synchronize_session=False)
    user_list = session.query(User.id,User.name,User.age).filter(User.id>1).update({"age": User.age + 1}, synchronize_session="evaluate")



    参考博客: http://www.cnblogs.com/wupeiqi/articles/5713330.html

    ----- END -----

  • 相关阅读:
    ASP.NET应用程序与页面生命周期
    阻塞分析
    性能和异常日志
    solr 搜索引擎及搜索推荐应用
    solr 搜索引擎
    分布式缓存地址
    Windows平台分布式架构实践
    职责链模式vs状态模式区别
    HBase
    单例模式
  • 原文地址:https://www.cnblogs.com/george92/p/15117060.html
Copyright © 2011-2022 走看看