• 18.python关于mysql的api


    一.pymysql模块
    1.pymysql是Python中操作MySQL的模块
    2.执行sql语句
    (1)连接数据库:

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

    (2)创建表:

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #生成sql创建xixi表的语句
    sql = "CREATE TABLE xixi (id INT ,name VARCHAR (20))"
    #通过游标执行SQL命令语句
    cursor.execute(sql)

    查看结果:
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(20) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    (3)插入数据:

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #插入四条数据
    cursor.execute("INSERT INTO  xixi VALUES(1,'dongdong'),(2,'nannan'),(3,'xixi'),(4,'beibei')")
    #进行提交(在对数据库中的内容进行修改时,需要进行提交内容方可进行保存)
    conn.commit()

    查看结果:
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | dongdong |
    |    2 | nannan   |
    |    3 | xixi     |
    |    4 | beibei   |
    +------+----------+
    (4)查表数据
    方式一:查询游标起始的第一条结果

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #查数据
    RET=cursor.execute("select * from xixi")
    one=cursor.fetchone()                       
    print(one)

    查询结果:
    {'id': 1, 'name': 'dongdong'}
    方式二:查询游标起始的俩条数据

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #查数据
    many=cursor.fetchmany(2)                     
    print(many)

    查询结果:
    [{'id': 1, 'name': 'dongdong'}, {'id': 2, 'name': 'nannan'}]
    方式三:查询游标起始的所有数据

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #查数据
    all=cursor.fetchall()
    print(all)

    查询结果:
    [{'id': 1, 'name': 'dongdong'}, {'id': 2, 'name': 'nannan'}, {'id': 3, 'name': 'xixi'}, {'id': 4, 'name': 'beibei'}]
    (5)scroll移动当前的游标
    方式一:相对当前位置向上下移动(负数是向上,正数是向下)

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #查数据
    RET=cursor.execute("select * from xixi")
    one=cursor.fetchone()                       #第一次查询
    print(one)
    
    #scroll移动当前的游标
    cursor.scroll(1,mode='relative')          #游标向下移动1位
    
    one=cursor.fetchone()                       #第二次查询
    print(one)

    查询结果:
    {'id': 1, 'name': 'dongdong'}
    {'id': 3, 'name': 'xixi'}
    方式二:把游标位置移动到相对的位置

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    #查数据
    RET=cursor.execute("select * from xixi")
    one=cursor.fetchone()                       #第一次查询
    print(one)
    
    cursor.scroll(3,mode='absolute')          #把游标位置移动到3的位置
    
    one=cursor.fetchone()                       #第二次查询
    print(one)

    查询结果:
    {'id': 1, 'name': 'dongdong'}
    {'id': 4, 'name': 'beibei'}
    二.python中调用数据库启动事务
    当前account表
    +------+--------+---------+
    | id   | name   | balance |
    +------+--------+---------+
    |    1 | xixi   |   10000 |
    |    2 | beibei |   10000 |
    +------+--------+---------+
    python代码:

    import pymysql
    
    #连接mysql数据库创建conn对象(host连接的机器,user连接的用户,password连接的密=密码,db连接的数据库 )
    conn = pymysql.connect(host='192.168.1.232', port=3306, user='root', passwd='123456', db='xixi')
    
    #创建游标,默认是元组,可以改为字典:conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    try:
        insertSQL0="INSERT INTO  account(id,name,balance) VALUES (3,'yeye',4000)"    #给账户插入一条信息
        insertSQL1="UPDATE account set balance=balance-2000 WHERE name='xixi'"        #给xixi减去2000
        insertSQL2="UPDATE account set balance=balance+2000 WHERE name='beibei'"     #给beibei加2000
    
        cursor = conn.cursor()
    
        cursor.execute(insertSQL0)     #执行insertSQL0
        conn.commit()                  #提交insertSQL0的语句到数据库里
    
        cursor.execute(insertSQL1)     #执行insertSQL1
        raise Exception                #发生错误跳到except Exception as e
        cursor.execute(insertSQL2)     
        cursor.close()
        conn.commit()                  
    
    except Exception as e:            #如果捕捉到错误
    
        conn.rollback()                #执行回滚事务到上一次commit的地方代码继续往下走
        conn.commit()
    
    cursor.close()
    conn.close()

    查询account表结果:
    +------+--------+---------+
    | id   | name   | balance |
    +------+--------+---------+
    |    1 | xixi   |   10000 |
    |    2 | beibei |   10000 |
    |    3 | yeye   |    4000 |
    +------+--------+---------+

  • 相关阅读:
    第一个爬虫和测试
    数学规律
    自定义手绘
    tqqqy的成绩表
    Linux常用命令-netstat
    文档查看命令 cat more less tail head
    Linux三剑客-常用命令
    IO多路复用模型
    redis 的线程模型
    为什么需要缓存?
  • 原文地址:https://www.cnblogs.com/xixi18/p/10115417.html
Copyright © 2020-2023  润新知