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的三目运算符和not in运算符使用示例
Mar 03 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
Python中存取文件的4种不同操作
Jul 02 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python饼状图的绘制实例
Jan 15 Python
Python @property使用方法解析
Sep 17 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Python笔记之观察者模式
Nov 20 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python ATM功能实现代码实例
Mar 19 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python如何使用ConfigParser读取配置文件
Nov 12 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python的Django框架中的表单处理示例
2015/07/17 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python退出循环的方法
2020/06/18 Python
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
化学教师教学反思
2014/01/17 职场文书
房地产项目合作意向书
2015/05/08 职场文书