• 8.11 数据库ORM(5)


    2018-8-11 20:43:52

    昨天从俺弟家回来了.

    和俺弟聊天发现,他一直停留在自己目前的圈子,自己觉得很牛逼,比别人高人一等,,

    读书无用论,,可以用 幸存者偏激理论 大概就是这个 可以否决,,

    越努力,越幸运!

    每个人选择不同,追求的东西不同!

    ORM参考  https://www.cnblogs.com/wupeiqi/articles/5713330.html

     

     

    明天看数据库的最后一节 然后进入前端知识,,然后可以愉快的Django啦!! 

    睡觉睡觉!!2018-8-11 21:38:27  cf已经不大好完了,多花点时间看书!!!! 要把百年孤独看完,和苏东坡传!!!

      1 from sqlalchemy.ext.declarative import declarative_base
      2 from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index,CHAR,VARCHAR
      3 from sqlalchemy.orm import sessionmaker, relationship
      4 from sqlalchemy import create_engine
      5 
      6 Base = declarative_base()
      7 
      8 
      9 # 创建单表
     10 """
     11 1   白金
     12 2   黑金
     13 obj.xx ==> [obj,obj...]
     14 """
     15 class UserType(Base):
     16     __tablename__ = 'usertype'
     17     id = Column(Integer, primary_key=True, autoincrement=True)
     18     title = Column(VARCHAR(32), nullable=True, index=True)
     19 
     20 """
     21 1   方少伟   1
     22 2   成套     1
     23 3   小白     2
     24 # 正向
     25 ut = relationship(backref='xx')
     26 obj.ut ==> 1   白金
     27 """
     28 class Users(Base):
     29     __tablename__ = 'users'
     30     id = Column(Integer, primary_key=True, autoincrement=True)
     31     name = Column(VARCHAR(32), nullable=True, index=True)
     32     email = Column(VARCHAR(16), unique=True)
     33     user_type_id = Column(Integer,ForeignKey("usertype.id"))
     34 
     35     user_type = relationship("UserType",backref='xxoo')
     36     # __table_args__ = (
     37     #     UniqueConstraint('id', 'name', name='uix_id_name'),
     38     #     Index('ix_n_ex','name', 'email',),
     39     # )
     40 
     41 
     42 def create_db():
     43     engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/s4day62db?charset=utf8", max_overflow=5)
     44     Base.metadata.create_all(engine)
     45 
     46 def drop_db():
     47     engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/s4day62db?charset=utf8", max_overflow=5)
     48     Base.metadata.drop_all(engine)
     49 
     50 engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/s4day62db?charset=utf8", max_overflow=5)
     51 # 取一个连接 来连接用户
     52 Session = sessionmaker(bind=engine)
     53 session = Session()
     54 
     55 # 类 -> 表
     56 # 对象 -> 行
     57 # ###### 增加 ######
     58 #
     59 # obj1 = UserType(title='普通用户')
     60 # session.add(obj1)
     61 
     62 # objs =[
     63 #   UserType(title='超级用户'),
     64 #   UserType(title='白金用户'),
     65 #   UserType(title='黑金用户'),
     66 # ]
     67 # session.add_all(objs)
     68 
     69 # ###### 查 ######
     70 # print(session.query(UserType))
     71 # user_type_list = session.query(UserType).all()
     72 # for row in user_type_list:
     73 #     print(row.id,row.title)
     74 
     75 # select xxx  UserType where
     76 # user_type_list = session.query(UserType.id,UserType.title).filter(UserType.id > 2)
     77 # for row in user_type_list:
     78 #     print(row.id,row.title)
     79 
     80 # 分组,排序,连表,通配符,子查询,limit,union,where,原生SQL、
     81 # ret = session.query(Users, UserType)
     82 # select * from user,usertype;
     83 #
     84 # ret = session.query(Users, UserType).filter(Users.usertype_id==UserType.id)
     85 # select * from user,usertype whre user.usertype_id = usertype.id
     86 
     87 # result = session.query(Users).join(UserType)
     88 # print(result)
     89 
     90 # result = session.query(Users).join(UserType,isouter=True)
     91 # print(result)
     92 
     93 
     94 #
     95 
     96 # 1.
     97 # select * from b where id in (select id from tb2)
     98 
     99 # 加上  .subquery()   设置为子查询
    100 
    101 # 2 select * from (select * from tb) as B
    102 # q1 = session.query(UserType).filter(UserType.id > 0).subquery()
    103 # result = session.query(q1).all()
    104 # print(result)
    105 
    106 # 3
    107 # select
    108 #   id ,
    109 #   (select * from users where users.user_type_id=usertype.id)
    110 # from usertype;
    111 
    112 
    113 # session.query(UserType,session.query(Users).filter(Users.id == 1).subquery())
    114 # session.query(UserType,Users)
    115 # result = session.query(UserType.id,session.query(Users).as_scalar())
    116 # print(result)
    117 # result = session.query(UserType.id,session.query(Users).filter(Users.user_type_id==UserType.id).as_scalar())
    118 # print(result)
    119 
    120 
    121 
    122 
    123 
    124 
    125 # 问题1. 获取用户信息以及与其关联的用户类型名称(FK,Relationship=>正向操作)
    126 # user_list = session.query(Users,UserType).join(UserType,isouter=True)
    127 # print(user_list)
    128 # for row in user_list:
    129 #     print(row[0].id,row[0].name,row[0].email,row[0].user_type_id,row[1].title)
    130 
    131 # user_list = session.query(Users.name,UserType.title).join(UserType,isouter=True).all()
    132 # for row in user_list:
    133 #     print(row[0],row[1],row.name,row.title)
    134 
    135 
    136 # user_list = session.query(Users)
    137 # for row in user_list:
    138 #     print(row.name,row.id,row.user_type.title)
    139 
    140 
    141 # 问题2. 获取用户类型
    142 # type_list = session.query(UserType)
    143 # for row in type_list:
    144 #     print(row.id,row.title,session.query(Users).filter(Users.user_type_id == row.id).all())
    145 
    146 # type_list = session.query(UserType)
    147 # for row in type_list:
    148 #     print(row.id,row.title,row.xxoo)
    149 
    150 
    151 
    152 
    153 
    154 
    155 # ###### 删除 ######
    156 # session.query(UserType.id,UserType.title).filter(UserType.id > 2).delete()
    157 
    158 # ###### 修改 ######
    159 # session.query(UserType.id,UserType.title).filter(UserType.id > 0).update({"title" : "黑金"})
    160 # session.query(UserType.id,UserType.title).filter(UserType.id > 0).update({UserType.title: UserType.title + "x"}, synchronize_session=False)
    161 # session.query(UserType.id,UserType.title).filter(UserType.id > 0).update({"num": Users.num + 1}, synchronize_session="evaluate")
    162 
    163 
    164 session.commit()
    165 session.close()

     

  • 相关阅读:
    JS 打印实现部分打印
    window.opener和window.open
    js中!和!!的区别及用法
    SQL循环表里的数据
    简明lua教程[转]
    mysql调优技巧-profiles
    MySQL的InnoDB的幻读问题
    linux exec命令
    常用正则搜集整理
    flashget for linux安装问题解决
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9459088.html
Copyright © 2020-2023  润新知