• python--使用MySQL数据库


    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条.

  • 相关阅读:
    2018-8-10-win10-uwp-读取保存WriteableBitmap-、BitmapImage
    2018-8-10-win10-uwp-读取保存WriteableBitmap-、BitmapImage
    字节流与字符流的区别详解
    Java线程之 InterruptedException 异常
    java 线程的几种状态
    C++中 引用&与取地址&的区别
    百度富文本编辑器ueditor在jsp中的使用(ssm框架中的应用)
    CodeForces
    CodeForces
    训练记录
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/5345263.html
Copyright © 2020-2023  润新知