运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程
有关前两篇的链接:
运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间
运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取
一、实验环境:
Python2.7.10、pycharm、VM虚拟机、CentOS6.3、mysql
二、MySQLdb模块:
MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭建真心感觉比其他的麻烦好多。。。这次光安装这个MySQLdb这个模块就花了好长时间,遇到好多问题,不过幸好还是成功使用上了,稍后我会加上一篇我是怎么安装的教程,会列出我遇到的问题供大家参考。
三、实现:
这里先介绍一下数据库,我们使用的是安装在CentOS上的MySQL数据库。数据库的安装这里不做介绍。
在MySQL中我们把所有表放在名为linux的数据库中,数据库包含两张表:存放linux信息数据的linux表中,存放硬盘数据的fdisk表中
这两个表的SQL:
CREATE TABLE linux //linux表
(
os_version VARCHAR(1000) NOT NULL,
os_kernal VARCHAR(1000) not NULL,
os_data VARCHAR(1000) PRIMARY KEY,
) CREATE TABLE fdisk //fdisk表
(
f_date TIMESTAMP(14) NOT NULL,
filesystem VARCHAR(1000) NOT NULL,
rom VARCHAR(1000) not NULL,
used VARCHAR(1000) not NULL,
not_used VARCHAR(1000) not NULL,
used_per VARCHAR(1000) NOT NULL,
mount VARCHAR(1000) not NULL
)
所有对于表的操作都在一个py文件中,包括插入和查询操作
mysql_db.py
#coding=UTF-8
import MySQLdb
import _mysql_exceptions
createlinuxsql = """
CREATE TABLE linux
(
os_version VARCHAR(1000) NOT NULL,
os_kernal VARCHAR(1000) not NULL,
os_data VARCHAR(1000) PRIMARY KEY, )
"""
createfdisksql = """
CREATE TABLE fdisk
(
f_date TIMESTAMP(14) NOT NULL,
filesystem VARCHAR(1000) NOT NULL,
rom VARCHAR(1000) not NULL,
used VARCHAR(1000) not NULL,
not_used VARCHAR(1000) not NULL,
used_per VARCHAR(1000) NOT NULL,
mount VARCHAR(1000) not NULL
)
"""
class mysql:
def __init__(self):
try:
self.conn = MySQLdb.connect(host='192.168.179.129',user='root',passwd='ro',db='linux')
self.cur = self.conn.cursor()
except _mysql_exceptions.OperationalError,e:
print '数据库无法连接'
def __del__(self):
self.cur.close()
self.conn.commit()
self.conn.close()
def select(self):
try:
self.cur.execute("select * from linux")
for each in self.cur.fetchall():
print each
except _mysql_exceptions.ProgrammingError,e:
self.cur.execute(createlinuxsql)
def os_insert(self,version,kernal,data):
try:
self.cur.execute("insert into linux VALUES ('%s','%s','%s')"% (version,kernal,data))
except _mysql_exceptions.ProgrammingError,e:
self.cur.execute(createlinuxsql)
self.cur.execute("insert into linux VALUES ('%s','%s','%s')"% (version,kernal,data))
def fdisk_select(self):
try:
self.cur.execute("select * from fdisk")
print self.cur.fetchall()
except _mysql_exceptions.ProgrammingError,e:
self.cur.execute(createfdisksql)
def fdisk_insert(self,filesystemz,romz,usedz,nousedz,usedperz,mountz):
try:
self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) \
VALUES ('%s','%s','%s','%s','%s','%s')"% (filesystemz,\
romz,usedz,nousedz,usedperz,mountz))
except _mysql_exceptions.ProgrammingError,e:
self.cur.execute(createfdisksql)
self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) \
VALUES ('%s','%s','%s','%s','%s','%s')"% (filesystemz,\
romz,usedz,nousedz,usedperz,mountz))
不用去手动建立表,只要数据库存在会自动建立表的
同时对以前的一些代码进行了更新,更新只填写变动
os_info.py:
# coding=UTF-8
import linux_status
import os_info_in
from mysql_db import mysql
class os_info:
def __init__(self):
# self.linux_stat=linux_status.linux_status()
self.os_infos_in= os_info_in.os_info_in()
def os_info(self):
self.linux_stat=linux_status.linux_status()
self.linux_stat.os_version = self.os_infos_in.os_version()
self.linux_stat.os_kernal = self.os_infos_in.os_kernel()
self.linux_stat.os_date = self.os_infos_in.os_date()
return self.linux_stat
def os_in_mysql(self):
os_db=mysql()
os_db.os_insert(self.os_infos_in.os_version(),self.os_infos_in.os_kernel(),self.os_infos_in.os_date())
linux_fdisk.py:
def fdisk_mysql(self):
self.fdisk_mysql=mysql()
i=0
j=1
while j==1:
try:
self.fdisk_mysql.fdisk_insert(self.disk_info[i],self.disk_info[i+1],self.disk_info[i+2],\
self.disk_info[i+3],self.disk_info[i+4],self.disk_info[i+5])
i=i+6
except Exception,e:
j=0
四、结果展示:
mysql不支持显示中文,把linux改为英文就可以了(export LANG=en_US)
最后~
这个系列就先写到这吧~~等以后有啥新的想法会继续写的~~
欢迎大神加我QQ:707475486~备注:博客园就行~这样我有什么问题就可以很轻松的问了!大家一起进步~~~~~最近工作比较忙所以这一篇更得比较慢~
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库的更多相关文章
- 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取
本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...
- Python语言编写BP神经网络
Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...
- 使用c语言实现在linux下的openssl客户端和服务器端编程
使用c语言实现在linux下的openssl客户端和服务器端编程 摘自:https://www.cnblogs.com/etangyushan/p/3679457.html 前几天组长让我实现一个使用 ...
- 尚学python课程---11、linux环境下安装python注意
尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...
- 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间
申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过 ...
- Python语言应用解析,如何入门学Python?
Python在机器学习人工智能领域非常流行,可以说是算法工程师的标配编程语言.Python语言广泛应用在web开发.大数据开发.人工智能开发.机器学习.后端开发等领域之中,近几年Python语言的趋势 ...
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. 不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...
- 用python语言编写网络爬虫
本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re= ...
- 使用python语言编写脚本控制freeswitch总结
1. 在Linux环境下已经安装了freeswitch,(没安装freeswitch,请安装说明文档) 2. 进入源代码目录 cd libs/esl 目录下 首先安装 yum install p ...
随机推荐
- javax.ejb.SessionBean
import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.ejb.CreateException; //有状态 ...
- Javascript高级程序设计学习笔记一
看完w3school的javascript的概念,有点基础,开始红皮书的路程,今晚总结前二章的心得. 第一章:javascript简介 重点是javascript的实现是由 ECMAScript(核心 ...
- Android二维码开源项目zxing用例简化和生成二维码、条形码
上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...
- 纯代码 自己主动屏幕适配iPhone button
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2h1bmdlc2hpaHVhdGlhbg==/font/5a6L5L2T/fontsize/400/fil ...
- 全面理解js面向对象
前言 当今 JavaScript 大行其道,各种应用对其依赖日深.web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而忽略了对原生 JavaScript 的学 ...
- Jquery $.extend的重载方法详述
1 $.extend(result,item1,item2,item3,........) -这个重载方法主要是用来合并,将所有的参数都合并到result中,并返回result,但是这样会破坏res ...
- HDU OJ 5437 Alisha’s Party 2015online A
题目:click here 题意: 邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每 ...
- BZOJ 3612: [Heoi2014]平衡( dp )
枚举Fl, 就变成一个整数划分的问题了...f(i,j) = f(i-j,j-1)+f(i-j,j)-f(i-N-1,j-1)递推.f(i,j)表示数i由j个不同的数组成,且最大不超过N的方案数 -- ...
- 如何学习Javascript ?
先说说学js的条件 论条件,咱是文科生,大学专业工商管理,和计算机毛关系都没:有人说英语,读了四年大学,很遗憾,咱还四级没混过:就咱这条件都学得乐呵呵的,您还等啥.当然学习JS也是有门槛的,就是你的h ...
- [LeetCode]题解(python):117-Populating Next Right Pointers in Each Node II
题目来源: https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ 题意分析: 根据上一题,如果给定 ...