Python读取ini文件、操作mysql、发送邮件实例


Posted in Python onJanuary 01, 2015

我是闲的没事干,2014过的太浮夸了,博客也没写几篇,哎~~~ 用这篇来记录即将逝去的2014

python对各种数据库的各种操作满大街都是,不过,我还是喜欢我这种风格的,涉及到其它操作,不过重点还是对数据库的操作。呵~~

Python操作Mysql

首先,我习惯将配置信息写到配置文件,这样修改时可以不用源代码,然后再写通用的函数供调用

新建一个配置文件,就命名为conf.ini,可以写各种配置信息,不过都指明节点(文件格式要求还是较严格的):

[app_info]

DATABASE=test

USER=app

PASSWORD=123456

HOST=172.17.1.1

PORT=3306
[mail]

host=smtp.163.com

mail_from=zhoujie0111@126.com

password=654321

send_to=zhoujie0111@139.com;zhoujie0111@163.com

同目录下新建文件db.py,精悍的代码如下,不解释:

# -*-coding:utf-8 -*-
import MySQLdb   #首先必须装这两个包

import ConfigParser
cf=ConfigParser.ConfigParser()

cf.read("conf.ini")
DATABASE=cf.get("app_info","DATABASE")

USER=cf.get("app_info","USER")

PASSWORD=cf.get("app_info","PASSWORD")

HOST=cf.get("app_info","HOST")

PORT=cf.get("app_info","PORT")
def mysql(sql):

    try:

        conn=MySQLdb.connect(host=HOST,user=USER,passwd=PASSWORD,db=DATABASE,port=PORT)

        cur = conn.cursor()

        cur.execute(sql)

        rows = cur.fetchall()

        conn.commit()  #这个对于增删改是必须的,否则事务没提交执行不成功

        cur.close()

        conn.close()

        return rows

    except MySQLdb.Error,e:

        print "Mysql Error %d: %s" % (e.args[0], e.args[1])

上面是封装了操作数据库的方法,只需提供一个sql语句,CRUD均可操作。下面来YY一些数据来测试下增删改查的具体用法(easy的,我真是闲),接着上面的代码写:

def operation():

    #查询

    select = mysql('select * from test')
    #插入

    '''

    插入这个地方有2点需要注意:

    1.插入某几列如下指定,插入全部可以不指定列,但必须后面插入的值要按顺序

    2.注意下面的type列两边有反斜点,这是因为type在我这个数据库里有个表也叫这个,或者可以把它叫关键字,不加反斜点插入会失败

    3.这没好说的,呵呵,数字占位符用%d,字符串用%s,且字符串占位符必须用双引号括起来

    '''

    insert = mysql('insert into test (name,number,`type`) values("%s",%d,"%s")'%('jzhou',100,'VIP'))
    #更新

    mysql('update test set number=%d where name="%s"'%(99,'jzhou'))
    #删除

    delete = mysql('delete from test where number = %d and `type`="%s"'%(100,'jzhou'))
    return select #我返回这个是为了下面发送邮件用的,顺便增加个发送邮件的功能

我只是想把这个简单的操作搞的复杂点,增加个发送邮件的功能,也是接着上面的代码:

mailto_list=[]

send_info=cf.get("mail","send_to")

send_array=send_info.split(";")

for i in range(len(send_array)):

    mailto_list.append(send_array[i])
mail_host=cf.get("mail","host")

mail_from=cf.get("mail","mail_from")

mail_password=cf.get("mail","password")
def send_mail(to_list,sub,content):

    me=mail_from

    msg=MIMEText(content,_subtype='html',_charset='utf-8')

    msg['Subject']=sub

    msg['From']=me

    msg['To']=";".join(to_list)

    try:

        s=smtplib.SMTP()

        s.connect(mail_host)

        s.login(mail_from,mail_password)

        s.sendmail(me,to_list,msg.as_string())

        s.close()

        return True

    except Exception,e:

        print str(e)

        return False

发送邮件的配置我也是写在conf.ini里的,在主函数里调用一下发送邮件来结束这个东西:

if __name__ == '__main__':

    sub = u'不要问我为什么写这篇博客,闲,就是任性!'

    content = operation()

    if send_mail(mailto_list,sub,content):

        print 'send success'

    else:

        print 'send failed'

其实我还想说一下python操作postgresql,跟mysql非常类似,下载包psycopg2,不太相同的就是postgresql中执行的sql语句都要加双引号,来感受一下:

# -*-coding:utf-8 -*-

import psycopg2

import ConfigParser
cf=ConfigParser.ConfigParser()

cf.read("conf.ini")
DATABASE=cf.get("cmdb_info","DATABASE")

USER=cf.get("cmdb_info","USER")

PASSWORD=cf.get("cmdb_info","PASSWORD")

HOST=cf.get("cmdb_info","HOST")

PORT=cf.get("cmdb_info","PORT")
def psql(sql):

    try:

        conn = psycopg2.connect(database=DATABASE, user=USER, password=PASSWORD, host=HOST, port=PORT)

        cur = conn.cursor()

        cur.execute(sql)

        rows = cur.fetchall()

        conn.commit()

        cur.close()

        conn.close()

        return rows

    except Exception,e:

        print e
def psql_oper():

    sql="select \"name\",\"type\" from \"test\" where \"name\" = 'jzhou'"

    rows=psql(sql)

    print rows

我总结了下,此博客虽简单,但包含三个重要的知识点,^_^

1、python读取ini文件(要import ConfigParser)
2、python操作mysql
3、python发送邮件

4、发表出来的都是经过实践检验的,即使很简单,这是一种态度!

Python 相关文章推荐
Python采用raw_input读取输入值的方法
Aug 18 Python
python实现爬取千万淘宝商品的方法
Jun 30 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
深入理解Python爬虫代理池服务
Feb 28 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
python 切换root 执行命令的方法
Jan 19 Python
python开发游戏的前期准备
May 05 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
django实现后台显示媒体文件
Apr 07 Python
如何理解python对象
Jun 21 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 #Python
Python Web框架Flask信号机制(signals)介绍
Jan 01 #Python
Python模拟登录12306的方法
Dec 30 #Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 #Python
简单的抓取淘宝图片的Python爬虫
Dec 25 #Python
简单使用Python自动生成文章
Dec 25 #Python
Python 抓取动态网页内容方案详解
Dec 25 #Python
You might like
三个类概括PHP的五种设计模式
2012/09/05 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
详解webpack babel的配置
2018/01/09 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
python使用turtle绘制分形树
2018/06/22 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
挂牌仪式主持词
2014/03/20 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
职工年度考核评语
2014/12/31 职场文书
实习推荐信格式模板
2015/03/27 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书