python对MySQL的CRUD

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 我是闲的没事干,2014过的太浮夸了,博客也没写几篇,哎~~~ 用这篇来记录即将逝去的2014   python对各种数据库的各种操作满大街都是,不过,我还是喜欢我这种风格的,涉及到其它操作,不过重点还是对数据库的操作。

我是闲的没事干,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、发表出来的都是经过实践检验的,即使很简单,这是一种态度!

 

作者: zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
SQL 关系型数据库 MySQL
Python之MySQL操作及Paramiko模块操作
Python之MySQL操作及Paramiko模块操作
|
25天前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
25天前
|
关系型数据库 MySQL 大数据
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
|
1月前
|
SQL 关系型数据库 MySQL
Python系列:教你使用PyMySQL操作MySQL数据库
Python系列:教你使用PyMySQL操作MySQL数据库
35 8
|
1月前
|
关系型数据库 MySQL 数据库
Python操作Mysql,这一篇就够了
Python操作Mysql,这一篇就够了
27 1
|
1月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
|
1月前
|
SQL 关系型数据库 MySQL
"Python与MySQL的浪漫邂逅:一键掌握增删改查,开启你的数据库编程之旅!"
【8月更文挑战第21天】Python因其简洁的语法和强大的库支持,成为连接数据库的首选工具。本文介绍如何使用Python连接MySQL数据库并执行基本操作。首先需安装`mysql-connector-python`库。通过配置连接信息建立数据库连接后,可利用`cursor.execute()`执行SQL语句进行数据的增删改查,并通过`commit()`提交更改。查询时使用`fetchall()`或`fetchone()`获取结果。记得处理异常及关闭连接以释放资源。掌握这些基础,有助于高效进行数据库编程。
27 0
|
1月前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
144 0
|
4天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
6天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
66 11

热门文章

最新文章