运用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:

 1 CREATE TABLE linux //linux表
 2 (
 3 os_version VARCHAR(1000) NOT NULL,
 4 os_kernal VARCHAR(1000) not NULL,
 5 os_data VARCHAR(1000) PRIMARY KEY,
 6 )
 7
 8 CREATE TABLE fdisk //fdisk表
 9 (
10 f_date TIMESTAMP(14) NOT NULL,
11 filesystem VARCHAR(1000) NOT NULL,
12 rom VARCHAR(1000) not NULL,
13 used VARCHAR(1000) not NULL,
14 not_used VARCHAR(1000) not NULL,
15 used_per VARCHAR(1000) NOT NULL,
16 mount VARCHAR(1000) not NULL
17 )

所有对于表的操作都在一个py文件中,包括插入和查询操作

mysql_db.py

 1 #coding=UTF-8
 2 import MySQLdb
 3 import _mysql_exceptions
 4 createlinuxsql = """
 5 CREATE TABLE linux
 6 (
 7 os_version VARCHAR(1000) NOT NULL,
 8 os_kernal VARCHAR(1000) not NULL,
 9 os_data VARCHAR(1000) PRIMARY KEY,
10
11 )
12 """
13 createfdisksql = """
14 CREATE TABLE fdisk
15 (
16 f_date TIMESTAMP(14) NOT NULL,
17 filesystem VARCHAR(1000) NOT NULL,
18 rom VARCHAR(1000) not NULL,
19 used VARCHAR(1000) not NULL,
20 not_used VARCHAR(1000) not NULL,
21 used_per VARCHAR(1000) NOT NULL,
22 mount VARCHAR(1000) not NULL
23 )
24 """
25 class mysql:
26     def __init__(self):
27         try:
28             self.conn = MySQLdb.connect(host=‘192.168.179.129‘,user=‘root‘,passwd=‘ro‘,db=‘linux‘)
29             self.cur = self.conn.cursor()
30         except _mysql_exceptions.OperationalError,e:
31             print ‘数据库无法连接‘
32     def __del__(self):
33         self.cur.close()
34         self.conn.commit()
35         self.conn.close()
36     def select(self):
37         try:
38             self.cur.execute("select * from linux")
39             for each in self.cur.fetchall():
40                 print each
41         except _mysql_exceptions.ProgrammingError,e:
42             self.cur.execute(createlinuxsql)
43     def os_insert(self,version,kernal,data):
44         try:
45             self.cur.execute("insert into linux VALUES (‘%s‘,‘%s‘,‘%s‘)"% (version,kernal,data))
46         except _mysql_exceptions.ProgrammingError,e:
47             self.cur.execute(createlinuxsql)
48             self.cur.execute("insert into linux VALUES (‘%s‘,‘%s‘,‘%s‘)"% (version,kernal,data))
49     def fdisk_select(self):
50         try:
51             self.cur.execute("select * from fdisk")
52             print self.cur.fetchall()
53         except _mysql_exceptions.ProgrammingError,e:
54             self.cur.execute(createfdisksql)
55     def fdisk_insert(self,filesystemz,romz,usedz,nousedz,usedperz,mountz):
56         try:
57             self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) 58                               VALUES (‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘)"% (filesystemz,59                                 romz,usedz,nousedz,usedperz,mountz))
60         except _mysql_exceptions.ProgrammingError,e:
61             self.cur.execute(createfdisksql)
62             self.cur.execute("insert into fdisk(filesystem,rom,used,not_used,used_per,mount) 63                               VALUES (‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘)"% (filesystemz,64                                 romz,usedz,nousedz,usedperz,mountz))

不用去手动建立表,只要数据库存在会自动建立表的

同时对以前的一些代码进行了更新,更新只填写变动

os_info.py:

 1 # coding=UTF-8
 2 import linux_status
 3 import os_info_in
 4 from mysql_db import mysql
 5 class os_info:
 6     def __init__(self):
 7         # self.linux_stat=linux_status.linux_status()
 8         self.os_infos_in= os_info_in.os_info_in()
 9     def os_info(self):
10         self.linux_stat=linux_status.linux_status()
11         self.linux_stat.os_version = self.os_infos_in.os_version()
12         self.linux_stat.os_kernal = self.os_infos_in.os_kernel()
13         self.linux_stat.os_date = self.os_infos_in.os_date()
14         return self.linux_stat
15     def os_in_mysql(self):
16         os_db=mysql()
17         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~备注:博客园就行~这样我有什么问题就可以很轻松的问了!大家一起进步~~~~~最近工作比较忙所以这一篇更得比较慢~

时间: 2024-07-30 13:49:36

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库的相关文章

Kitty:Python语言编写的Fuzzing框架

Kitty是一款用Python语言编写的开源的模块化.可扩展的模糊测试框架,灵感来源于OpenRCE’s Sulley 和 Michael Eddington的 (现在为Deja Vu Security的) Peach Fuzzer . 目标 我们开始写Kitty的时候,目的是帮助我们fuzz特殊的目标.也就就是运行于非TCP/IP通道上的私有和内部协议.一个通用.抽象的框架应该包含所有我们能想到的模糊测试过程中用到的所有通用功能,并且能方便用户扩展,以便用来攻击特定目标. 特性 心中有了这样的

Web2py是一个用Python语言编写的免费的开源Web框架

Zope 2是一款基于Python的Web应用框架,是所有Python Web应用程序.工具的鼻祖,是Python家族一个强有力的分支.Zope 2的"对象发布"系统非常适合面向对象开发方法,并且可以减轻开发者的学习曲线,还可以帮助你发现应用程序里一些不好的功能. Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速.可扩展.安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议. Web2py提供一站式的解决方案,整个开发过程都可

运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过两天自己回顾这部分内容的时候发现就又忘了,于是自己就想到自己边学边写一些小程序,以便能更好的让自己记住语法. 一.开发环境以及测试环境 Python2.7.10.pycharm.VM虚拟机.CentOS6.3 二.代码实现 代码结构: commands.py —> os_info_in.py —>

搞几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码!

为提高大家对"Python"编程语言的学习兴趣,今天给大家分享几款有趣的Python程序代码,感兴趣的小伙伴可以跟着学习借鉴哦!进群:839383 765可以获取Python学习资料哦! 分享一:"啥是佩奇?"让Python语言告诉你用Python代码创作一副佩奇: <pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Co

用python语言编写网络爬虫

本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re=urllib.request.urlopen('网址‘) 打开的也可以是个urllib.request.Request对象,后边也可以跟数据参数,当有传入数据时会自动变为POST请求: 2.urllib.request.Request(url,data=None,headers={})对象 属性:

使用python语言编写脚本控制freeswitch总结

1.  在Linux环境下已经安装了freeswitch,(没安装freeswitch,请安装说明文档) 2.  进入源代码目录 cd  libs/esl 目录下 首先安装 yum install python-devel l  首先安装 python-devel,执行yum install python-devel l  make pymod l  make pymod-install 3.安装pip工具参照前面的一篇博客 4.安装swig工具,yum install swig 5.安装完成p

乐搏讲自动化测试 - Python语言编写规则(10)

(1)编码:默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码:例如 # -- coding: cp-1252 --,这个定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语.白罗斯语.马其顿语.俄语.塞尔维亚语. (2)标识符:1..第一个字符必须是字母表中字母或下划线 _ .2.标识符的其他的部分由字母.数字和下划线组成.3.标识符对大小写敏感.在 Python

Python语言编写脚本时,对日期控件的处理方式

对日期控件,日期控件的输入控一般是不能手动输入的:把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多此类型input框都是禁止手动输入的,怎么办? 很简单,用js把禁止输入的readonly属性去掉就好了.如下四种方法都可 # -*- coding: utf-8 -*- from selenium import webdriver from time import sleep driver = webdriver.Fir

用 Python 脚本实现对 Linux 服务器的监控

hon 分享到:8 原文出处: 曹江华 目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对 Linux 服务器的监控. 本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络的监控脚本的编写. Python 版本说明 Python 是由 Guido va