python第十三天

时间:2023-03-08 15:50:58
python第十三天

这几天在欺负docker兽,很是开心,但是没想到领导突然让我去殴打openstack兽,完全没有兴趣嘛,毕竟前一阵一直在吊打它,当然啦,对于愚蠢的人类而言openstack兽是十分强大的,不过对于北方来说就不是酱了python第十三天老司机带你飞啊~~~过几天还要给愚蠢的人类讲云计算,我靠,这么简单的东西还需要讲?讲也不应该由北方大人来讲好不好python第十三天,简单写点吧,刚才为了愚蠢的人类们写了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)