我是闲的没事干,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对MySQL的CRUD的更多相关文章

  1. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  2. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  3. 使用 python 管理 mysql 开发工具箱 - 1

    Mysql 是一个比较优秀的开源的数据库,很多公司都在使用.作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现. 一.模块 Co ...

  4. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  5. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  7. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  8. python对Mysql操作和使用ORM框架(SQLAlchemy)

    python对mysql的操作 Mysql 常见操作 数据库操作 创建数据库 create database fuzjtest 删除数据库 drop database fuzjtest 查询数据库 s ...

  9. python操作mysql总结

    Windows系统,python环境搭建. 下载并安装python2.7.11 https://www.python.org/downloads/ 下载并安装python的mysql包: http:/ ...

随机推荐

  1. hadoop之定制自己的Partitioner

    partitioner负责shuffle过程的分组部分,目的是让map出来的数据均匀分布在reducer上,当然,如果我们不需要数据均匀,那么这个时候可以自己定制符合要求的partitioner. 下 ...

  2. R软件中 文本分析安装包 Rjava 和 Rwordseg 傻瓜式安装方法四部曲

    这两天,由于要做一个文本分析的内容,所以搜索了一天R语言中的可以做文本分析的加载包,但是在安装包的过程,真是被虐千百遍,总是安装不成功.特此专门写一篇博文,把整个心塞史畅快的释放一下. ------- ...

  3. Dao DaoImp

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...

  4. M1个人贡献分以及转会确定

    按照之前的方案,团队成员得分统计表见下:   P(Pd*pf) 比重 个人得分 黎柱金 335400 0.1844 63 晏旭瑞 306000 0.1682 59 孙思权 304150 0.1672 ...

  5. C++:类中的赋值函数

    先来看一个例子: #include<iostream> #include<string> using namespace std; class Student{ public: ...

  6. 团队编程--MP3播放器

    设计思路: 这次的作业是一个MP3播放器,它是一个团队项目.由于我们都没接触过这类的编程.刚开始的时候我们是不知道从什么地方着手的.经过我们的商量我们决定从现在市场主流的音乐播放器上找到几个主要的功能 ...

  7. java的小学生四则运算

    import java.awt.*; import java.awt.event.*; import java.io.FileNotFoundException; import java.io.IOE ...

  8. Apollo配置名词-学习1

    文章:Apollo分布式配置中心部署以及使用 部署环境为DEV(开发环境).FAT(测试环境).UAT(预生产).PRO(生产)

  9. 索引超出了数组界限。 在 System.Collections.Generic.Dictionary`2.Resize

    博问:Dictionary 超出了数组界限 异常: Exception type: IndexOutOfRangeException Exception message: 索引超出了数组界限. 在 S ...

  10. Java网络编程一:基础知识详解

    网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层   ------------ ...