Python中使用Mysql(编码实践)

2024-06-22 21:58

本文主要是介绍Python中使用Mysql(编码实践),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文档 或者看源码

http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb-module.html


开篇

在上一篇Python中使用Mysql(安装篇)中,我们为Python安装了支持MySQL数据库的MySQLdb包,这篇中写的是我工作中最常用到的几种情形。

虽然也支持在Python中创建表,之类的操作。但在实际中很少是通过程序去创建一个数据库或一张表的。 这些工作一般都是由公司的DBA来完成。所以对于研发来说, 对数据库最常做的事情包括查询,插入行,和更新行。在实际工作中,删除一些行的行为也是不常用的,因为删除了就不容易回来,当不需要一些数据时,通常有一个代表 可用和不可用的字段,比如叫 enable。 当想删除一行时候,把这一行的enable置成0 来代替删除的动作。


情形一,查询一行

下面是一段查询代码小例子:

#!/usr/local/bin/python
#  coding:utf-8 
import MySQLdbdb_handle = MySQLdb.connect(host = '10.10.10.10', user = 'root', passwd = '123456',  db = 'test',port = 3306, charset = 'utf8') sql = "select * from test.user_info limit 1"
cur = db_handle.cursor( MySQLdb.cursors.DictCursor )
cur.execute( sql )
result = cur.fetchone()
cur.close()
db_handle.close()
print result['id']

连接数据库,查询一行,我用了fetchone()这个方法。 最后把结果打印了出来。非常简单。
请看这一句
cur = db_handle.cursor( MySQLdb.cursors.DictCursor )
它使得上面的result是一个字典的对象,可以直接用索引来访问对应的字段。

情形二,查询多行

查询多行和查询一行基本一样,就是 用的是 fetchall() 代替 fetchone()

#!/usr/local/bin/python
#  coding:utf-8 
import MySQLdbdb_handle = MySQLdb.connect(host = '10.10.0.10', user = 'root', passwd = '123456',  db = 'test',port = 3306, charset = 'utf8')sql = "select * from user_info limit 3"
cur = db_handle.cursor( MySQLdb.cursors.DictCursor )
cur.execute( sql )
result = cur.fetchall()
cur.close()
db_handle.close()if not result :for row in result:print row['id']

查询时候,总有可能是查不到的,这时fetchone的返回值是 None, 但fetchall() 的返回值 是 () 空的元组,而不是None。 所以可以通过 下面这句判断是不足的。
<pre name="code" class="python"><strong>if result == None :</strong>
 
这句对 fetchone()是有效的,但是对于 fetchall()是无效的,
推荐使用
<strong>if not result :</strong>
这样对于 None 或者 空的元组() 都是有效的。
 

fetchall()的返回是一个元组,所以不能直接取对应字段,通常我是用一个循环,来处理每一行的数据。


情形三,插入或者更新一行

插入和更新与 查询有不同之处在于 这个动作修改了数据库中的内容。 所以少了查询后fetch结果的动作,而换成了commit 提交的动作。 示例代码:

#!/usr/local/bin/python
#  coding:utf-8 
import MySQLdbdb_handle = MySQLdb.connect(host = '10.10.10.10', user = 'root', passwd = '123456',  db = 'test',port = 3306, charset = 'utf8')sql = "insert into fruit values ('','apple','fruit','red')"
cur = db_handle.cursor( MySQLdb.cursors.DictCursor )
cur.execute( sql )
db_handle.commit()
cur.close()
db_handle.close()

更新也是差不多的句式,只是SQL语句从insert 换成了 update了 ,最后不要忘记了 commit()。



这篇关于Python中使用Mysql(编码实践)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085529

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

mysql索引三(全文索引)

前面分别介绍了mysql索引一(普通索引)、mysql索引二(唯一索引)。 本文学习mysql全文索引。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

mysql索引一(普通索引)

mysql的索引分为两大类,聚簇索引、非聚簇索引。聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引则不同。聚簇索引能够提高多行检索的速度、非聚簇索引则对单行检索的速度很快。         在这两大类的索引类型下,还可以降索引分为4个小类型:         1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。         2,唯一索引:与普通索引

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是