1.安装mysql
sudo apt-get install mysql-server
Sudo apt-get install mysql-client

2.安装MySQL-python驱动
sudo apt-get install mysql-python

3.测试是否安装成功
python解释器命令下运行 import MySQLdb
没有报错,说明安装已成功。

4.python使用mysql数据库常见操作 exmysql.py

# -*- coding: utf-8 -*-
import MySQLdb try:
#mysql连接
conn = MySQLdb.connect(host='localhost',user='root',passwd='password',port=3306,charset='utf8') #创建游标
cur = conn.cursor() #创建数据库
cur.execute('create database if not exists pythondb') #切换到数据库
conn.select_db('pythondb') #创建表
cur.execute("create table student(id int,name varchar(20),age int)") #插入单条数据
cur.execute("insert into student values(9,'张三',28)") #插入多条数据
cur.execute("insert into student values(2,'shijingjing08',21),(3,'shijingjing09',30),(4,'shijingjing10',12)") #更新数据
cur.execute("update student set age=27 where name='shijingjing07' ") #删除数据
cur.execute("delete from student where name='shijingjing10' ") #查找数据
count = cur.execute("select * from student ")
print "总条数"
print count result = cur.fetchone()
print "查找一条"
print result results = cur.fetchmany(5)
print "查找多条"
for r in results:
print r cur.scroll(0,mode='absolute') #游标定位到表中第一条数据
results = cur.fetchall() print "查找所有数据,第二列的值"
for r in results:
print r[1] #在再次执行select查询返回结果集时,需要执行nextset()操作,移动到下一结果集,否则会报2014错误
cur.nextset() #执行存储过程的两种方法
#cur.execute("call get_student('shijingjing',20)")
cur.callproc("get_student",('shijingjing',20))
print "执行存储过程"
data=cur.fetchall()
for d in data:
print d #关闭游标
cur.close() #提交
conn.commit()
#关闭数据库连接
conn.close() except MySQLdb.Error,e:
print "Mysql Error %d:%s"%(e.args[0],e.args[1])

存储过程get_student(in p_name varchar(20),in p_age int),输入name,age参数,模糊查找name,以及age>p_age的学生。

delimiter $
create procedure get_student(in p_name varchar(20),in p_age int)
begin
select * from student where name like concat(p_name,'%') and age>p_age;
end;
$

5.运行结果:

6.常用的操作:
commit() 提交
rollback() 回滚

callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

最新文章

  1. Createjs学习一
  2. 浅析 Magento网站建站空间的选择
  3. 说说Web API数据格式化——Json
  4. 基础!winForm客户端最常用的几个基本属性
  5. [原创]cocos2d-x研习录—前言
  6. java开发之关键字
  7. BestCoder Round #81 (div.2)C String
  8. Apache-POI操作Excel的一些小技巧
  9. LeetCode_算法及数据结构覆盖统计
  10. ODP.NET Managed正式推出
  11. windows窗体继承问题
  12. ASP.NET底层封装HttpModule实例---FormsAuthentication类的分析
  13. Firefox书签同步工具Xmarks
  14. Struts中的找不到StringUtils异常
  15. jquery()后续版本中,live()取消后使用on()实现功能写法
  16. Laravel使用Form(转载)
  17. BZOJ4832[Lydsy1704月赛]抵制克苏恩——期望DP
  18. 欢迎来到GIS思考者的博客www.gisthinker.com
  19. 第三章:文件I/O
  20. CentOS7 Nodejs布署环境

热门文章

  1. 【TP3.2+onethink1.0】2个Ueditor 回显数据,第2个会把第1个覆盖
  2. 【TP3.2】模板 select选项采坑
  3. Axure快速原型教程01--原型说明下载和安装
  4. [转]GFS架构分析
  5. Navicat sqlserver2016 08001
  6. java struts2入门学习实例--用户注册和用户登录整合
  7. linux top命令查看内存及多核CPU的使用讲述【转】
  8. C# 因IIS回收导致定时器失效的解决方案
  9. 还没被玩坏的robobrowser(7)——表单操作
  10. Java Nashorn--Part 3