zoukankan      html  css  js  c++  java
  • 04python——连接mysql并对其进行操作

     PYthon连接数据库并进行操作方法汇总

    1.本地开发环境如下

    a.操作系统 Mac os

    b.数据库 MySQL 8.0

    c.Python 3.8.2

    d.pip 20.0.3

    2.连接数据库的方法

    a. PyMySQL

    b.mysql.connector

    3.python连接数据的常规步骤

    a.连接数据库

    b.生成游标对象

    c.执行SQL语句

    d.关闭游标

    f.关闭连接

    4.PyMySQL 简单介绍

    a.它是封装了MySQL驱动的Python驱动,可以Python连接到MySQL的库。

    b.环境要求:Python version >= 3.4

    c.PyMySQL安装:正常的第三方包导入即可。

    d.安装成功后,查看包的版本,可以在终端里输入 pip  show PyMySQL

      当然,如果用pycharm里导入包,可以直接查看到包的版本。

    5.利用PyMySQL连接数据库

    import pymysql as pl
    
    conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                    passwd='W3AWD5Tkf8kNB',
                    db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/
    cur = conn.cursor()
    
    sql= "select * from qqdz_company_user limit 10"
    cur.execute(sql)
    data = cur.fetchall()
    # 取前20行数据
    for i in data[:20]:
    print(i)
    cur.close()  /*关闭游标*/
    conn.close() /*关闭连接*/

    6.mysql.connector介绍

    a. mysql官方的纯python驱动

    b.安装/查看版本,同其他的第三方包一样

    7.利用mysql.connector连接数据库

    import mysql.connector
    #/*fgw_qqzx_prod是数据库名*/ 
    conn=mysql.connector.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/ 
    cur = conn.cursor()
    sql
    = "select * from qqdz_company_user limit 100"
    cur.execute(sql)
    data
    = cur.fetchall()

    # 取前20行数据

    for i in data[:20]:
    print(i)

    8.python对mysql数据库实现增删改查

    增加数据

    import pymysql as pl
    
    conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                    passwd='W3AWD5Tkf8kNB',
                    db='fgw_qqzx_prod', charset='utf8')
    #/*fgw_qqzx_prod是数据库名*/
    cur = conn.cursor()
    
    sql = "insert into qqdz_company_user values ('1','21','33')"
    try:
        cur.execute(sql)
        # 提交到数据库
        conn.commit()
    except:  
        # 如果发生错误,则回滚
        conn.rollback()
    
    # 关闭数据库连接
    conn.close()

    查询数据

    import pymysql as pl
    
    conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                    passwd='W3AWD5Tkf8kNB',
                    db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/
    cur = conn.cursor()
    
    sql= "select * from qqdz_company_user limit 10"
    cur.execute(sql)
    data = cur.fetchall()
    # 取前20行数据
    for i in data[:20]:
        print(i)
    cur.close()  /*关闭游标*/
    conn.close() /*关闭连接*/

    删除数据

    import pymysql as pl
    
    conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                    passwd='W3AWD5Tkf8kNB',
                    db='fgw_qqzx_prod', charset='utf8')
    #/*fgw_qqzx_prod是数据库名*/
    cur = conn.cursor()
    
    sql = "delete from qqdz_company_user where number = 10"
    try:
        cur.execute(sql)
        # 提交到数据库
        conn.commit()
    except:  
        # 如果发生错误,则回滚
        conn.rollback()
    
    # 关闭数据库连接
    conn.close()

    修改数据

    import pymysql as pl
    
    conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                    passwd='W3AWD5Tkf8kNB',
                    db='fgw_qqzx_prod', charset='utf8')
    #/*fgw_qqzx_prod是数据库名*/
    cur = conn.cursor()
    
    sql = "update qqdz_company_user set name = "小明" where number = 10"
    try:
        cur.execute(sql)
        # 提交到数据库
        conn.commit()
    except:  
        # 如果发生错误,则回滚
        conn.rollback()
    
    # 关闭数据库连接
    conn.close()

    9.案例演示

    import pymysql
    config = {'host':'172.18.111.199','port':3306, 'user':'qqdz_reader','passwd':'W3AWD5Tkf8kNB',
               'charset':'utf8'}
    conn = pymysql.connect(**config)
    cursor = conn.cursor()
    try:
        # 创建数据库
        DB_NAME = 'test_3'
        cursor.execute('DROP DATABASE IF EXISTS %s' % DB_NAME)
        cursor.execute('CREATE DATABASE IF NOT EXISTS %s' % DB_NAME)
        conn.select_db(DB_NAME)
        #创建表
        TABLE_NAME = 'bankData'
        cursor.execute('CREATE TABLE %s(id int primary key,money int(30))' %TABLE_NAME)
        # 批量插入纪录
        values = []
        for i in range(20):
            values.append((int(i),int(156*i)))
            cursor.executemany('INSERT INTO bankData values(%s,%s)',values)
        conn.commit()
        # 查询数据条目
        count = cursor.execute('SELECT * FROM %s' %TABLE_NAME)
        print ('total records:{}'.format(cursor.rowcount))
        # 获取表名信息
        desc = cursor.description
        print ("%s %3s" % (desc[0][0], desc[1][0]))
        cursor.scroll(10,mode='absolute')
        results = cursor.fetchall()
        for result in results:
            print (result)
    except:
        import traceback
        traceback.print_exc()
        # 发生错误时会滚
        conn.rollback()
    finally:
        # 关闭游标连接
        cursor.close()
        # 关闭数据库连接
        conn.close()
  • 相关阅读:
    按行打印二叉树结点值
    Kafka消息队列(继续深挖)
    【Java IO模式】Java BIO NIO AIO总结
    JAVA线程池的执行过程
    CentOS7升级版本
    【转】KVM中打开virt-manager报错或者将其显示为中文界面的办法
    【转】linux kvm虚拟机配置及常见问题处理
    【转】关于Quartus ii无法识别Modelsim路径的问题
    【转】[git]error: pack-objects died of signal
    storm kafka整合
  • 原文地址:https://www.cnblogs.com/hongchenlianxinlu/p/12623668.html
Copyright © 2011-2022 走看看