zoukankan      html  css  js  c++  java
  • python之路-第11周

    目录

    1.sqlalchemy模块

    人称最高端的ORM模块,能支持好多数据库,这里就搞一搞mysql。

    pymysql:mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

    (1)、来个例子:基本用法

    
    from sqlalchemy import create_engine  #用于创建连接
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String  #创建表时候的列,int和str类型
    from  sqlalchemy.orm import sessionmaker
     
    Base = declarative_base() #生成一个SqlORM 基类
     
    #之前必须要先创建一个test库,create database test.
    engine = create_engine("mysql+mysqldb://root@localhost:3306/test",echo=False)  
    #engine = create_engine("mysql+mysqldb://root@localhost:3306/test",echo=True)  #echo能够显示中间过程,可以看到自动生成的SQL语句
    #engine = create_engine("mysql+pymysql://root:password@localhost:3306/test",echo=True)
     
     
    class Host(Base):
        #创建一个Host表,表名称为hosts,有id,hostnmae,ip_addr和port四列。
        __tablename__ = 'hosts'
        id = Column(Integer,primary_key=True,autoincrement=True)  #自增,如果不加的话自己从1开始递增
        hostname = Column(String(64),unique=True,nullable=False)
        ip_addr = Column(String(128),unique=True,nullable=False)
        port = Column(Integer,default=22)  #默认22
     
    Base.metadata.create_all(engine) #创建所有表结构
     
    if __name__ == '__main__':
        SessionCls = sessionmaker(bind=engine) #创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
        session = SessionCls()
        #h1 = Host(hostname='localhost',ip_addr='127.0.0.1')
        #h2 = Host(hostname='ubuntu',ip_addr='192.168.2.243',port=20000)
        #h3 = Host(hostname='ubuntu2',ip_addr='192.168.2.244',port=20000)
        #session.add(h3)  #增加h3
        #session.add_all( [h1,h2])  #批量增加,注意要传入列表
        #h2.hostname = 'ubuntu_test' #只要没提交,此时修改也没问题
        #session.rollback()  #回滚
        #session.commit() #提交
        res = session.query(Host).filter(Host.hostname.in_(['ubuntu2','localhost'])).all()  
        #相当于数据库select操作:select * from Host where hostname in ('ubuntu2','localhost');
        print(res)
    
    

    (2)、增删改查

    
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
      
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy import create_engine
      
    engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5)
      
    Base = declarative_base()
      
      
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(String(50))
      
    # 寻找Base的所有子类,按照子类的结构在数据库中生成对应的数据表信息
    # Base.metadata.create_all(engine)
      
    Session = sessionmaker(bind=engine)
    session = Session()
      
      
    # ########## 增 ##########
    # u = User(id=2, name='sb')
    # session.add(u)
    # session.add_all([
    #     User(id=3, name='sb'),
    #     User(id=4, name='sb')
    # ])
    # session.commit()
      
    # ########## 删除 ##########
    # session.query(User).filter(User.id > 2).delete()
    # session.commit()
      
    # ########## 修改 ##########
    # session.query(User).filter(User.id > 2).update({'cluster_id' : 0})
    # session.commit()
    # ########## 查 ##########
    # ret = session.query(User).filter_by(name='sb').first()
      
    # ret = session.query(User).filter_by(name='sb').all()
    # print ret
      
    # ret = session.query(User).filter(User.name.in_(['sb','bb'])).all()
    # print ret
      
    # ret = session.query(User.name.label('name_label')).all()
    # print ret,type(ret)
      
    # ret = session.query(User).order_by(User.id).all()
    # print ret
      
    # ret = session.query(User).order_by(User.id)[1:3]
    # print ret
    # session.commit()
    
    
    

    2.堡垒机

    之前先推荐一本书啊~~~ 《消费者行为学》

    (1) 堡垒机是啥?

    比简单的跳板机更牛逼,具备权限和审计功能。

    另外,堡垒机十分重要,是整个信息系统安全中很重要的一环。

    (2)需求:

    业务需求:

    • 兼顾业务安全目标与用户体验,堡垒机部署后,不应使用户访问业务系统的访问变的复杂,否则工作将很难推进,因为没人喜欢改变现状,尤其是改变后生活变得更艰难
    • 保证堡垒机稳定安全运行, 没有100%的把握,不要上线任何新系统,即使有100%把握,也要做好最坏的打算,想好故障预案

    功能需求:

    • 所有的用户操作日志要保留在数据库中
    • 每个用户登录堡垒机后,只需要选择具体要访问的设置,就连接上了,不需要再输入目标机器的访问密码
    • 允许用户对不同的目标设备有不同的访问权限,例:
      - 对10.0.2.34 有mysql 用户的权限
      - 对192.168.3.22 有root用户的权限
      - 对172.33.24.55 没任何权限
    • 分组管理,即可以对设置进行分组,允许用户访问某组机器,但对组里的不同机器依然有不同的访问权限
  • 相关阅读:
    开源中国在线插件工具
    本本变身路由 iPad通过笔记本上网(转)
    Windows 7 中让IIS7支持shtml功能及在ASP.Net中使用UrlRewritingNet实现链接重写
    URLRewrite伪静态与AspNetPager分页控件的结合
    CSS 连接地址后面加上问号(?)表示什么意思?
    .net 下如何将文档文件(Word, Pdf等) 中的文本提取出来(转)
    常用JQuery插件整理(转)
    解决PowerDesigner 16 Generate Datebase For Sql2005 找不到sysproperties表的问题(转,并修改了里面的错误)
    Jquery实用代码片段(转)
    Jquery+ashx当把鼠标放到每篇文章时,自动显示该文章的缩略内容( 图片)的异步加载方法
  • 原文地址:https://www.cnblogs.com/felo/p/5344157.html
Copyright © 2011-2022 走看看