zoukankan      html  css  js  c++  java
  • PyMySQL

    PyMySQL介绍:

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    Django中也可以使用PyMySQL连接MySQL数据库。

    一、PyMySQL安装:

    pip install pymysql  

    二、PyMySQL连接数据库:

    # 导入pymysql模块
    import pymysql
    # 连接database
    conn = pymysql.connect(host=“你的数据库地址”, port=端口号,user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
    # 得到一个可以执行SQL语句的光标对象
    cursor = conn.cursor()
    # 定义要执行的SQL语句
    sql = """
    CREATE TABLE USER1 (
    id INT auto_increment PRIMARY KEY ,
    name CHAR(10) NOT NULL UNIQUE,
    age TINYINT NOT NULL
    )ENGINE=innodb DEFAULT CHARSET=utf8;
    """
    # 执行SQL语句
    cursor.execute(sql)
    # 关闭光标对象
    cursor.close()
    # 关闭数据库连接
    conn.close()

    注:1.端口号不要加引号 port:3306

           2.字符编码'utf8',不要写成"utf-8"

    三、PyMySQL链接数据库,实现登录验证

    # pymysql导包
    import pymysql
    # 获取用户输入
    username = input("请输入用户名:")
    usersex = input('请输入性别:')
    # 连接mysql数据库,用conn接收
    conn=pymysql.connect(
        host='localhost',
        port=3306,
        database='myinfo',
        user='root',
        password='123456',
        charset='utf8'
    )
    # 获取连接后的操作光标
    course=conn.cursor()
    # 写SQL语句
    sql= "select * from first where name=%s and sex=%s;"
    
    # 执行SQL语句 让pymysql帮我们拼接SQL语句
    ret=course.execute(sql,[username,usersex])
    # 判断是否输入是否和数据库内一致
    if ret:
        print('登录成功')
    else:
        print('登录失败')
    #关闭连接光标
    course.close()
    # 关闭数据库链接
    conn.close()

    四、PyMySQL实现数据库的增添数据

    import pymysql
    conn=pymysql.connect(
        host='localhost',
        port=3306,
        database='myinfo',
        user='root',
        password='123456',
        charset='utf8')
    
    cursor=conn.cursor()
    sql="insert into first(id,name,sex,class) values(4,%s,%s,1)"
    # try一下,解决传入参数的时候少传,多传报错问题
    # 同时设置数据回滚
    try:
        cursor.execute(sql,['思密达'])
        # 对数据库有增删改操作时候必须要把命令commit提交
        conn.commit()
    except Exception as e:
        print('出错啦',e)
        conn.rollback()
    conn.close()
    cursor.close()
    添加数据时异常处理
    import pymysql
    conn=pymysql.connect(
        host='localhost',
        port=3306,
        database='myinfo',
        user='root',
        password='123456',
        charset='utf8')
    cursor=conn.cursor()
    sql2="insert into first(id,name,sex,class) values(%s,%s,%s,1)"
    data=[('4','思密达',''),('5','么么哒',''),('6','达令','')]
    try:
        # 批量添加用executemany
        cursor.executemany(sql2,data)
        conn.commit()
    except Exception as e:
        print('出错啦',e)
        conn.rollback()
    conn.close()
    cursor.close()
    批量添加

    五、PyMySQL数据查询

    import pymysql
    conn=pymysql.connect(
        host="localhost",
        port=3306,
        database="myinfo",
        user='root',
        password='123456',
        charset='utf8'
    )
    # 指定返回的类型是字典
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    sql='select * from first'
    cursor.execute(sql)
    # 获取下一条数据
    ret=cursor.fetchone()
    # 获取所有的数据
    ret=cursor.fetchall()
    # 获取查询具体多少条数据
    ret=cursor.fetchmany(3)      #查询三条数据
    # 获取第一条开始的所有数据 绝对定位
    ret=cursor.scrool(1,mode='absolute')
    # 相对定位:获取上一个查询数据位置的下下一个开始的所有数据
    ret=cursor.scrool(1,mode='relative')
    print(ret)
    conn.commit()
    conn.close()
    cursor.close()

    六、lastrowid 获取最后添加的id值

    import pymysql
    conn=pymysql.connect(
        host='localhost',
        port=3306,
        user='root',
        database='myinfo',
        charset='utf8',
        password='123456'
    )
    cursor=conn.cursor()
    # 给class添加数据
    sql1='insert into classkey(class) values(%s)'
    # 添加first数据
    sql2="insert into first(name,sex,class) values(%s,%s,%s)"
    # 执行sql1
    cursor.execute(sql1,'s6')
    # 获取class最后一个添加数据的id
    new_id=cursor.lastrowid
    # 执行sql2 给first 添加数据
    cursor.execute(sql2,['cool','',new_id])
    conn.commit()
    conn.close()
    cursor.close()
    lastrowid用法
  • 相关阅读:
    【转帖】asp.net mvc与webform区别
    [学习jquery]深入了解jquery(1)jquery对象
    windows ce 4.2/5.0/6.0/windows mobile设备直接连接PC端的SQLserver
    dotNet dispose 和 close的区别
    简易快速理解 ERP
    互联网盈利模式77种创新 [转]
    软件开发的基础知识[1]
    什么是 SHTML
    ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了![msdn]
    主页制作五十式[好帖就要转]
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/8619546.html
Copyright © 2011-2022 走看看