python第十三天
这几天在欺负docker兽,很是开心,但是没想到领导突然让我去殴打openstack兽,完全没有兴趣嘛,毕竟前一阵一直在吊打它,当然啦,对于愚蠢的人类而言openstack兽是十分强大的,不过对于北方来说就不是酱了
老司机带你飞啊~~~过几天还要给愚蠢的人类讲云计算,我靠,这么简单的东西还需要讲?讲也不应该由北方大人来讲好不好
,简单写点吧,刚才为了愚蠢的人类们写了2小时openstack的安装文档,累死萌萌了,下面该短暂的学习前端知识了
paramiko模块
直接完整版本
#!/usr/bin/env python
import paramiko class SSHConnection(object):
def __init__(self, host='172.16.5.7', port=22, username='root',pwd='123qweASD'):
"""
信息初始化
:return:
"""
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.__k = None def run(self):
self.connect()
pass
self.close() def connect(self):
"""
创建连接
:return:
"""
transport = paramiko.Transport((self.host,self.port))
transport.connect(username=self.username,password=self.pwd)
self.__transport = transport def close(self):
"""
关闭连接
:return:
"""
self.__transport.close() def cmd(self, command):
"""
命令执行方法
:return:
"""
ssh = paramiko.SSHClient()
ssh._transport = self.__transport
stdin, stdout, stderr = ssh.exec_command(command)
result = stdout.read()
print(result.decode()) def upload(self,local_path, target_path):
"""
上传操作方法
:return:
"""
sftp = paramiko.SFTPClient.from_transport(self.__transport)
sftp.put(local_path, target_path) ssh = SSHConnection()
ssh.connect()
# ssh.cmd('df')
# ssh.upload('s2.py', "/root/sss.py")
ssh.cmd('ls -l')
ssh.close()
数据库的,从单表练习开始,再用一对多,最后多对多
#!/usr/bin/env python
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
from sqlalchemy.orm import sessionmaker, relationship
engine = create_engine('mysql+pymysql://test:123@172.16.5.7/s13', max_overflow=5) Base = declarative_base() class HostToHostUser(Base):
"""
定义host_to_host_user表的类
"""
__tablename__ = 'host_to_host_user'
nid = Column(Integer, primary_key=True, autoincrement=True)
host_id = Column(Integer, ForeignKey('host.nid'))
host_user_id = Column(Integer, ForeignKey('host_user.nid')) host = relationship('Host', backref='h')
host_user = relationship('HostUser', backref='u') class Host(Base):
"""
定义host表的类
"""
__tablename__ = 'host'
nid = Column(Integer, primary_key=True, autoincrement=True)
hostname = Column(String(32))
port = Column(String(32))
ip = Column(String(32)) host_user = relationship('HostUser', secondary=HostToHostUser.__table__, backref='h') class HostUser(Base):
"""
定义host_user表的类
"""
__tablename__ = 'host_user'
nid = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(32)) def init_db():
"""
表创建函数
:return:
"""
Base.metadata.create_all(engine) def drop_db():
"""
表删除函数
:return:
"""
Base.metadata.drop_all(engine) # init_db()
# drop_db() Session = sessionmaker(bind=engine) # 建立会话保持连接
session = Session() # 插入相关数据
# session.add_all([
# Host(hostname='c1', port='22', ip='1.1.1.1'),
# Host(hostname='c2', port='22', ip='1.1.1.2'),
# Host(hostname='c3', port='22', ip='1.1.1.3'),
# Host(hostname='c4', port='22', ip='1.1.1.4'),
# Host(hostname='c5', port='22', ip='1.1.1.5'),
# HostUser(username='root'),
# HostUser(username='nb'),
# HostUser(username='db'),
# HostUser(username='sb'),
# HostToHostUser(host_id=1, host_user_id=1),
# HostToHostUser(host_id=1, host_user_id=2),
# HostToHostUser(host_id=1, host_user_id=3),
# HostToHostUser(host_id=2, host_user_id=2),
# HostToHostUser(host_id=2, host_user_id=3),
# HostToHostUser(host_id=2, host_user_id=4),
# ])
#
# session.commit()
# host_obj = session.query(Host).filter(Host.hostname == 'c1').first()
# host_2_host_user = session.query(HostToHostUser.host_user_id).filter(HostToHostUser.host_id == host_obj.nid).all()
# r = zip(*host_2_host_user)
# users = session.query(HostUser.username).filter(HostUser.nid.in_(list(r)[0])).all()
# print(users) host_obj = session.query(Host).filter(Host.hostname == 'c1').first()
# for i in host_obj.h:
# print(i.host_user.username) print(host_obj.host_user)
python第十三天的更多相关文章
- 初学 Python(十三)——匿名函数
初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 ...
- 孤荷凌寒自学python第二十三天python类的封装
孤荷凌寒自学python第二十三天python类的封装 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.从怎么样访问类的内部代码块中定义的私有属性说起 类中定义的私有属性和私有方法是无法被 ...
- 孤荷凌寒自学python第十三天python代码的外部模块引用与基本赋值语句
孤荷凌寒自学python第十三天python代码的外部模块引用与基本赋值语句 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 从结构化编程流行以来,代码便被分块存储,称之为模块或库. 在pyt ...
- Python进阶(十三)----面向对象
Python进阶(十三)----面向对象 一丶面向过程编程vs函数式编程vs面向对象编程 面向过程: 简而言之,step by step 一步一步完成功能,就是分析出解决问题所需要的步骤,然后用函 ...
- selenium python (十三)对于分页的处理
#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #对于web上分页的功能,一般做如下操作: #获取总页数 # ...
- Python 第十三篇之二:jQuery基础
一:jQuery是一个兼容多浏览器的javascript类库,核心理念是write less,do more(写得更少,做得更多),对javascript进行了封装,是的更加便捷的开发,并且在兼容性方 ...
- Python爬虫(十三)_案例:使用XPath的爬虫
本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载 ...
- 小甲鱼Python第二十三讲课后习题--025,字典
笔记: 1.字典是Python中唯一的映射类型 2.字典包含两个要素:键(key)和值(value)他们是成对出现的,用大括号括起来,多对存在时用逗号隔开. 3.可以用dict()直接创建字典,如di ...
随机推荐
- MSSQL 创建自定义异常
创建时,必须先创建英文的,否则会报错:必须添加此消息的 us_english 版本后,才能添加 '简体中文' 版本. EXEC sp_addmessage 50001, 15, 'option wro ...
- 【转】linux 编译安装nginx,配置自启动脚本
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
- access数据库select查询top时无效的解决办法
access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...
- spring + spring mvc可能会遇到的问题
Spring容器优先加载由ServletContextListener(对应applicationContext.xml)产生的父容器,而SpringMVC(对应mvc_dispatcher_serv ...
- Navicat(服务器对象) -2之MySQL 或 MariaDB 对象
MySQL 或 MariaDB 对象 http://www.navicat.com.cn/manual/online_manual/cn/navicat/win_manual/index.html 要 ...
- sqlite_
应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作.我 ...
- .Net的Excel 导出 格式设置
添加引用:Microsoft Excel 11.0 Object Library ; 添加:using Microsoft.Office.Interop.Excel; 一.打开Exce ...
- Unknow Unknow
Unknow Unknow,讲的大概意思是:你不知道这事情的时候,那么请不要轻易下任何结论.例如,这个太难了,放弃吧.嗯,这个是捷径.而最后却是,困难的路越走越容易,容易的路越走越难.只是一种常见的现 ...
- PCI Express(一)- Connector
在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Ex ...
- js复制input 框中的值
function copy(){ var Url2=document.getElementById("copyValue"); Url2.select(); document.ex ...