Python Mysql学习总结

任何应用都离不开数据,所以在学习python的时候,当然也要学习一个如何用python操作数据库了。MySQLdb就是python对mysql数据库操作的模块。官方Introduction : MySQLdb is an thread-compatible interface to the popular MySQL database server that provides the Python database API. 它其实相当于翻译了对应C的接口。

使用这种数据库接口大多是就是执行连接数据库->执行query->提取数据->关闭连接 这几个步骤。MySQLdb提供比较关键的对象,分别是Connection、Cursor、Result。具体使用步骤很简单先不写了,先写一些个人认为比较重要、值得注意的地方。

1、虽然在MySQLdb.Connect(host ,user , passw , db)函数中,我们经常使用的只是这几个参数,但是其实里面还有很多比如字符集、线程安全、ssl等也都是很重要的参数,使用时要身份注意。

2、当使用Connection.query()函数进行query后,connection 对象可以返回两种result,分别是store_result和use_result,store_result 将结果集存回client端,而use_result则是结果集保存在server端,并且维护了一个连接,会占用server资源。此时,不可以进行任何其他的查询。建议使用store_result,除非返回结果集(result set)过大或是无法使用limit的情形。

3、提取(fetch)数据的返回形式大多有三种情形。 as a tuple(how=0) ;as dictionaries, key=column or table.column if duplicated(how=1);as dictionaries, key=table.column (how=2)

4、每次fetch,在result内部都会产生数据位置的移动,也就是说假如有10行数据,执行result.fetch_row(3,0),会得到前三行,再执行result.fetch_row(3,0),则会得到中间的三行,所以说fetch会导致position的移动。另外值得注意的是,如果使用use_result,也就是数据存储在server时,在fetch所有的条目之前,不能进行任何的query操作。

5、mysql本身不支持游标(Cursor),但是MySQLdb对Cursor进行了仿真。重要的执行query方法有execute 和 executemany 。execute方法,执行单条sql语句,调用executemany方法很好用,数据库性能瓶颈很大一部分就在于网络IO和磁盘IO将多个insert放在一起,只执行一次IO,可以有效的提升数据库性能。游标cursor具有fetchone、fetchmany、fetchall三个方法提取数据,每个方法都会导致游标游动,所以必须关注游标的位置。游标的scroll(value, mode)方法可以使得游标进行卷动,mode参数指定相对当前位置(relative)还是以绝对位置(absolute)进行移动。

6、MySQLdb提供了很多函数方法,在官方指南里没有完全罗列,使用者可以用help去看看,里面提供了很多方便的东西。

7、对于mysql来说,如果使用支持事务的存储引擎,那么每次操作后,commit是必须的,否则不会真正写入数据库,对应rollback可以进行相应的回滚,但是commit后是无法再rollback的。commit() 可以在执行很多sql指令后再一次调用,这样可以适当提升性能。

8、executemany处理过多的命令也不见得一定好,因为数据一起传入到server端,可能会造成server端的buffer溢出,而一次数据量过大,也有可能产生一些意想不到的麻烦。合理,分批次executemany是个不错的办法。

时间: 2024-10-23 21:41:05

Python Mysql学习总结的相关文章

Python+MySQL学习笔记(一)

Python其实是可以操纵数据库的,想想如果能在python里写SQL语句,从而直接达到操纵数据库的目的,how cool! Python的标准数据库接口为Python DB-API,针对不同的数据库要安装不同的模块,其中,MySQLdb就是用于链接MySQL数据库的接口. 安装MySQLdb,可以在 http://sourceforge.net/projects/mysql-python 上找到安装包,下载安装即可,无需多余的设置. 使用流程大致如下: 导入MySQLdb模块 获取与数据库的连

mysql学习日志

Mysql学习日志; 安装:Linux :yum install mysql* -y 验证Mysql是否正常安装:mysqladmin --version 进入 Mysql,要先启动#service mysqld start#mysql 更换Mysql初始密码: 安装完成mysql为空密码,修改密码方式:mysqladmin -u root password newpassword 用户已经有旧密码的更改方式:MYSQLADMIN -u root -p'oldpassword' PASSWORD

Python/ MySQL练习题(一)

Python/ MySQL练习题(一) 2.查询"生物"课程比"物理"课程成绩高的所有学生的学号 1 SELECT 2 * 3 FROM 4 ( 5 SELECT 6 * 7 FROM 8 course 9 LEFT JOIN score ON score.course_id = course.cid 10 WHERE 11 course.cname = '生物' 12 ) AS A 13 INNER JOIN ( 14 SELECT 15 * 16 FROM 17

python mysql开发日志

开始做python 的数据库访问了,暂时选定了mysql数据库.原本想使用ORM,后来考虑到项目的情况是:表结构不复杂,但是数据库非常大.还是自己来操作sql,不过PYTHON的那些数据库ORM的代码写的还是挺酷的,作为PYTHON和mysql初学者的我来说正好可以学习一下.这里记录下,遇到的所有问题和技术要点 2014-08-14 sql: 查询语句去除重复:使用distinct 关键字 selecti distinct * from table_name python mysql开发日志

Mysql学习---视图/触发器/存储过程/函数/索引 180101

视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由于视图是虚拟表,所以无法使用其对真实表进行创建.更新和删除操作,PyMysql是支持视图的. 仅能做查询用. 创建视图: create VIEW stu as select * from student; # 这里只是建立了一个对应关系,视图是虚表,动态获取数据 select * from stu;

Python最佳学习路线

如何学习Python 最近开始整理python的资料,会陆续放到博客中存档.找了几个qq群,其中有一个群78486745.后面就没怎么加群了,还是需要看官方文档为主 python语言基础:(带你熟悉python语言的特性,学会使用python开发环境,使用python开发一些简单的案例) (1)Python3入门,数据类型,字符串 (2)判断/循环语句,函数, (3)类与对象,继承,多态 (4)tkinter界面编程 (5)文件与异常,数据处理简介 (6)Pygame实战飞机大战 python语

Python最佳学习路线,选一个发展方向努力吧!

一.概述 2019年Python语言可以说是火的一塌糊涂,作为一门将近20年的计算机语言,直到最近才流行起来,真是可以说是大器晚成.说句实在话,Python语言的大火与人工智能这门科学是密不可分的.那么Python只能做人工智能吗?答案:肯定不是.Python作为小白入门的计算机语言在合适不过了.那我们一起来看看Python语言最好的学习路线是什么,我给大家整理一份学习路线图,大家可以参考看一下. **创一个小群,供大家学习交流聊天 如果有对学python方面有什么疑惑问题的,或者有什么想说的想

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

MySQL学习笔记-基础入门

MySQL学习笔记