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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python中类的初始化特殊方法
Dec 01 Python
Python列表对象实现原理详解
Jul 01 Python
如何在Django项目中引入静态文件
Jul 26 Python
Django单元测试工具test client使用详解
Aug 02 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
Python库安装速度过慢解决方案
Jul 14 Python
Python map及filter函数使用方法解析
Aug 06 Python
如何用python写个模板引擎
Jan 14 Python
django上传文件的三种方式
Apr 29 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读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
应届生骨科医生求职信
2013/10/31 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
工作会议欢迎词
2014/01/16 职场文书
同居协议书范本
2014/04/23 职场文书
学习型班组申报材料
2014/05/31 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
文明倡议书
2015/01/19 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python