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

  1. def fdisk_mysql(self):
  2. self.fdisk_mysql=mysql()
  3. i=0
  4. j=1
  5. while j==1:
  6. try:
  7. self.fdisk_mysql.fdisk_insert(self.disk_info[i],self.disk_info[i+1],self.disk_info[i+2],\
  8. self.disk_info[i+3],self.disk_info[i+4],self.disk_info[i+5])
  9. i=i+6
  10. except Exception,e:
  11. j=0

四、结果展示:

mysql不支持显示中文,把linux改为英文就可以了(export LANG=en_US)

最后~

这个系列就先写到这吧~~等以后有啥新的想法会继续写的~~

欢迎大神加我QQ:707475486~备注:博客园就行~这样我有什么问题就可以很轻松的问了!大家一起进步~~~~~最近工作比较忙所以这一篇更得比较慢~

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

  1. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  2. Python语言编写BP神经网络

    Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135   人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...

  3. 使用c语言实现在linux下的openssl客户端和服务器端编程

    使用c语言实现在linux下的openssl客户端和服务器端编程 摘自:https://www.cnblogs.com/etangyushan/p/3679457.html 前几天组长让我实现一个使用 ...

  4. 尚学python课程---11、linux环境下安装python注意

    尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...

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

    申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过 ...

  6. Python语言应用解析,如何入门学Python?

    Python在机器学习人工智能领域非常流行,可以说是算法工程师的标配编程语言.Python语言广泛应用在web开发.大数据开发.人工智能开发.机器学习.后端开发等领域之中,近几年Python语言的趋势 ...

  7. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  8. 用python语言编写网络爬虫

    本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re= ...

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

    1.  在Linux环境下已经安装了freeswitch,(没安装freeswitch,请安装说明文档) 2.  进入源代码目录 cd  libs/esl 目录下 首先安装 yum install p ...

随机推荐

  1. Windows下Oracle服务介绍

    如图,截取的是11gR2下RAC其中一个节点的Oracle服务列表. oracle在处理一般事务时并不需要全部启动其后台的所有服务由于oracle服务所占用系统资源比较大,一般情况下,对于单实例的OR ...

  2. poj 2728 Desert King(最小比率生成树,迭代法)

    引用别人的解释: 题意:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一条路即可, 建造水管距离为坐标之间的欧几里德距离(好象是叫欧几里德距离吧),费用为海拔之差 现在要求 ...

  3. objective-C学习笔记(八) 集合类型 Collection Types

    OBJC的集合类型: 1.数组 Array 2.Set 3.键值对 Dictionary 数组:OC中的数组被定义为class,引用类型.索引从0开始,访问越界会抛出运行时异常. NSArray的元素 ...

  4. UICollectionView在Swift3.0中的用法

    UICollectionView在Swift3.0中的用法 UICollectionView的初始化跟OC中是相似的,创建 GameView 集成自 UICollectionView .注意不同于UI ...

  5. HDU 4497 GCD and LCM(分解质因子+排列组合)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4497 题意:已知GCD(x, y, z) = G,LCM(x, y, z) = L.告诉你G.L,求满 ...

  6. eclipse SVN 安装

    1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版    如果没有安装的请到这里下载安装:http://ecli ...

  7. 帝国cms本地搬家到服务器文章路径问题?

    由于我的服务器不支持采集功能,我只能选择先在本地采集好文章发布于本地,再打算同步于服务器. 按照官方的做法, 1.先进后台备份了网站的所有数据,系统——备份与恢复数据——备份数据 2.将e\admin ...

  8. 射频识别技术漫谈(26)——Felica的文件系统

    Felica的文件系统使用“系统\域\服务\数据块”的结构,如下图所示.通过这种结构实现对卡片非易失性存储区的使用和操作.                                     Fe ...

  9. python+opencv

    $cd numpy $ sudo python setup.py build $ sudo python setup.py installRunning from numpy source direc ...

  10. 使用Win32 API创建不规则形状&带透明色的窗口

    前一阵突然想起了9月份电面某公司实习时的二面题,大概就是说怎么用Win32 API实现一个透明的窗口,估计当时我的脑残答案肯定让面试官哭笑不得吧.所以本人决定好好研究下这个问题.经过一下午的摸索,基本 ...