zoukankan      html  css  js  c++  java
  • Python 操作 MySQL 数据库

    使用示例:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",port=3306,user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必须的
    cursor = conn.cursor()
    sql="select * from user_info"
    result=cursor.execute(sql)   #不论增删查改,result都是受影响的记录数,int型
    for row in cursor:   #遍历结果集
        print(row)  #输出一条记录,元组形式
        print(row[0])  #输出记录中的某个字段
    cursor.close()
    conn.close()

    提取一条记录:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必须的
    cursor = conn.cursor()
    sql="select * from user_info"
    result=cursor.execute(sql)
    print(cursor.fetchone())  #提取并返回一条记录,指针会自动后移。最初指针指向第一条之前。第一条
    print(cursor.fetchone())  #第二条。元组形式。
    print(cursor.fetchone()[0])  #一个字段,不能使用字段名,只能使用索引
    cursor.close()
    conn.close()

    提取多条记录:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必须的
    cursor = conn.cursor()
    sql="select * from user_info"
    result=cursor.execute(sql)
    print(cursor.fetchmany(2))   #提取指定的条数,指针会自动后移。只要是提取,指针都会自动后移。
    for row in cursor:  #cursor中是从第三行开始的记录
        print(row)
    #fetchmany()返回值是嵌套的元组形式。  ((1, 'chy', 200.0), (2, 'zhangsan', 200.0))。一个元素即一条记录。
    #fetchall()是提取结果集的所有记录
    #cursor存放结果集,提取就是把一些记录从cursor中提取出来(从cursor中拿出来,cursor中不再有这些记录了)
    cursor.close()
    conn.close()

    设置sql语句参数:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必须的
    cursor = conn.cursor()
    id=1
    name="chy"
    # sql="select * from user_info where id=%d and name='%s'"%(id,name)   #如果是字符串,%s要加引号
    sql="select * from user_info where id={} and name='{}'".format(id,name)  #如果是字符串,{}也要加引号
    result=cursor.execute(sql)
    print(cursor.fetchall())   #提取结果集中所有的记录数
    cursor.close()
    conn.close()

    插入一条记录:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")  #字符集不是必须的
    cursor = conn.cursor()
    id=3
    name="wangwu"
    money=100
    sql="insert into user_info (id,name,money) values (%d,'%s',%d)"%(id,name,money)  #如果是字符串,占位的要加引号
    result=cursor.execute(sql)  #增删查改都是execute
    print(result)  #1   搜相应的记录数
    print(cursor.fetchall())  #不会报错,空元组
    conn.commit()  #需要提交才会同步到数据库。缺少此句代码,不会同步到数据库。
    cursor.close()
    conn.close()

    增删改的操作类似,注意增删改都需要conn.commit()才会提交到数据库。

    另一种设置参数的方式:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")
    cursor = conn.cursor()
    sql="insert into user_info (id,name,money) values (%s,%s,%s)"  #如果是在execute()中注入数据,不管是什么类型,都必须写成%s,且不能加引号
    result=cursor.execute(sql,(5,"name",10))  #在execute()中注入数据。在这里区分数据类型。使用元组、列表均可
    #result=cursor.execute(sql,[5,"name",10]) 
    conn.commit()
    cursor.close()
    conn.close()

    批量操作:

    import pymysql  #python3
    conn=pymysql.connect(host="localhost",user="root",password="abcd",database="bank",charset="utf8")
    cursor = conn.cursor()
    sql="insert into user_info (id,name,money) values (%s,%s,%s)" #如果是在execute()中注入数据,不管是什么类型,都必须写成%s,且不能加引号
    data=((17,"chy",90),(18,"chy",99))  #至少2个元素,使用嵌套的元组、列表均可
    #data=[[17,"chy",90],[18,"chy",99]]
    try:
        result=cursor.executemany(sql,data)  #批量操作,注入嵌套的元组。注意是executemany(),且必须是嵌套的元组,元组中至少要有2个元组(记录),只有一条会出错。
        conn.commit()   #executemany()是执行2条及以上的操作,所以至少2个元素
    except Exception as e:
        print(e)
        conn.rollback()  #失败就回滚
    cursor.close()
    conn.close()
  • 相关阅读:
    如何写文件上传下载
    填充表格的模板代码
    ArcGIS Server 分布式注意事项
    在android上导入第三方jar包 报错:Could not find class
    @Override annotation 出错
    签到时间
    分页三条件查询
    上传图片
    分页
    二级联动
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11301105.html
Copyright © 2011-2022 走看看