zoukankan      html  css  js  c++  java
  • Python Mysql 交互

    Mysql 安装Python模块

     
    Linux:
    yum install MySQL-python
    

    Windos:

    http://files.cnblogs.com/files/wupeiqi/py-mysql-win.zip
    
    用户授权:
    mysql> grant all on *.* to 'root'@'%' identified by "123456";

    MySQLdb

    MySQLdb默认在3.0后不支持,最后一次更新在2014年。

    例子1:插入一条数据
    import MySQLdb
    
    # 创建链接实例对象
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')
    
    # 选定光标
    cur = conn.cursor()
    
    # 光标.execute 数据库执行命令
    reCount = cur.execute('insert into UserInfo(Name,Address) values(%s,%s)',('alex','usa'))
    # reCount = cur.execute('insert into UserInfo(Name,Address) values(%(id)s, %(name)s)',{'id':12345,'name':'wupeiqi'})
    
    # 提交
    conn.commit()
    
    # 关闭光标
    cur.close()
    
    # 关闭链接
    conn.close()
    
    print(reCount)
    View Code
    例子2:批量插入数据
    import MySQLdb
    
    # 创建链接实例对象
    conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')
    
    # 选定光标
    cur = conn.cursor()
    
    # 创建values列表
    li =[
         ('alex','usa'),
         ('sb','usa'),
    ]
    
    # 将列表传入到命令中 光标.executemany 自动将列表循环
    reCount = cur.executemany('insert into UserInfo(Name,Address) values(%s,%s)',li)
    
    # 提交命令
    conn.commit()
    
    # 关闭光标
    cur.close()
    
    # 关闭链接
    conn.close()
    
    print(reCount)
    View Code

    PyMySQL
    在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置
      • cursor.scroll(1,mode='relative')  # 相对当前位置移动
      • cursor.scroll(2,mode='absolute') # 相对绝对位置移动
     
    例子1:基本使用
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import pymysql
    
    # 创建连接
    conn = pymysql.connect(host='192.168.1.154', port=3306, user='root', passwd='123456', db='xiang')
    
    # 创建游标
    cursor = conn.cursor()
    
    
    # 一. execute 执行一条SQL
    # 执行SQL获取表内数据,并返回收影响行数
    #effect_row = cursor.execute("select * from xxx")
    
    # 1.fetchone() 递增输出信息
    # 取回数 有几条数据
    #print(effect_row)
    # 取回第一条数据
    #print(cursor.fetchone())
    # 取回第二条数据
    #print(cursor.fetchone())
    
    #print('---------------')
    
    # 2.fetchall() 获取游标后面所有条数
    #print(cursor.fetchall())
    
    # 3.fetchmany(num) 指定获取几条数据
    # print(cursor.fetchmany())
    
    
    
    # 二.executemany 以列表形式循环values
    # 创建value数据
    # data = [
    #     ("miya","2015-05-21"),
    #     ("anni","2015-05-22"),
    #     ("roli","2015-05-23"),
    #     ("xity","2015-05-24"),
    # ]
    # 执行SQL,并返回受影响行数executemany 循环列表内数据
    # effect_row = cursor.executemany("insert into xxx (name1,register_data) values(%s,%s)",data)
    
    
    
    # 提交,不然无法保存新建或者修改的数据
    # 默认开启事务提交完成
    conn.commit()
    
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    View Code

    例子2:字典类型打印

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import pymysql
    
    conn = pymysql.connect(host='192.168.1.154', port=3306, user='root', passwd='123456', db='xiang')
    
    # 游标设置为字典类型 cursor=pymysql.cursors.DictCursor
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 执行sql
    r = cursor.execute("select * from xxx")
    
    # 获取第一行
    result = cursor.fetchone()
    
    # 获取字典
    print(result)
    
    # 提交事务
    conn.commit()
    
    # 关闭游标
    cursor.close()
    
    # 关闭链接
    conn.close()
    View Code
  • 相关阅读:
    牛客(47)求1+2+3+...+n
    牛客(48)不用加减乘除做加法
    【推荐】可编程的热键 AutoHotkey
    【Web】js 简单动画,犯了低级错误
    【分享】JDK8u241 win x64度盘下载
    【Web】开始学Web开发!
    【数组】深析 “数组名称”
    【基础向】浅析 "多(二)维数组" 的三种引用方法
    【一个小错误】通过数组指针引用数组成员
    【网络通信教程】windows 下的 socket API 编程(TCP协议)
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8324478.html
Copyright © 2011-2022 走看看