zoukankan      html  css  js  c++  java
  • python3 使用pymysql

    基本操作:
    登陆:mysql -uroot -h127.0.0.1 -P3306 -p
    mysql -uroot -p(本机不用写host)
    退出mysql:ctrl+z+回车,或者exit
    端口号默认是3306,但是可以通过安装目录下的配置文件修改。


    #安装pymysql

    pip3 install pymysql


    #连接数据库

    import pymysql
    #打开数据库连接
    conn = pymysql.connect('localhost',user = "root",passwd = "123456",db = "testdb")
    #db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', db='testdb', charset='utf8')
    print (conn)
    print (type(conn))


    #创建数据库

    import pymysql
    #打开数据库连接,不需要指定数据库,因为需要创建数据库
    conn = pymysql.connect('localhost',user = "root",passwd = "123456")
    #获取游标
    cursor=conn.cursor()
    #创建pythonBD数据库
    cursor.execute('CREATE DATABASE IF NOT EXISTS pythonDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;')
    cursor.close()#先关闭游标
    conn.close()#再关闭数据库连接
    print('创建pythonBD数据库成功')


    #创建表

    import pymysql
    #打开数据库连接
    conn = pymysql.connect('localhost',user = "root",passwd = "123456",db = "testdb")
    #获取游标
    cursor=conn.cursor()
    print(cursor)
    
    #创建user表
    cursor.execute('drop table if exists user')
    sql="""CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `age` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
    
    cursor.execute(sql)
    cursor.close()#先关闭游标
    conn.close()#再关闭数据库连接
    print('创建数据表成功')

    #插入单条数据

    import pymysql
    #打开数据库连接,不指定数据库
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    
    cur=conn.cursor()#获取游标
    
    #创建user表
    cur.execute('drop table if exists user')
    sql="""CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `age` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
    
    cur.execute(sql)
    
    insert=cur.execute("insert into user values(1,'tom',18)")
    print('添加语句受影响的行数:',insert)
    
    #另一种插入数据的方式,通过字符串传入值
    sql="insert into user values(%s,%s,%s)"
    cur.execute(sql,(3,'kongsh',20))
    
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')


    批量插入多条数据

    import pymysql
    #打开数据库连接,不指定数据库
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #另一种插入数据的方式,通过字符串传入值
    sql="insert into user values(%s,%s,%s)"
    insert=cur.executemany(sql,[(4,'wen',20),(5,'tom',10),(6,'test',30)])
    print ('批量插入返回受影响的行数:',insert)
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')

    查询数据

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    cur.execute("select * from user;")
    while 1:
      res=cur.fetchone()
      if res is None:
      #表示已经取完结果集
        break
      print (res)
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')


    fetchmany

    import pymysql
    #打开数据库连接
    conn=pymysql.connect(‘localhost’,‘root’,‘123456’)
    conn.select_db(‘pythondb’)
    #获取游标
    cur=conn.cursor()
    
    cur.execute(“select * from user”)
    #取3条数据
    resTuple=cur.fetchmany(3)
    print(type(resTuple))
    for res in resTuple:
      print (res)
    
    cur.close()
    conn.commit()
    conn.close()
    print(‘sql执行成功’)


    fetchall 

    import pymysql
    #打开数据库连接
    conn=pymysql.connect(‘localhost’,‘root’,‘123456’)
    conn.select_db(‘pythondb’)
    #获取游标
    cur=conn.cursor()
    
    cur.execute(“select * from user”)
    #取所有数据
    resTuple=cur.fetchall()
    print(type(resTuple))
    print (‘共%d条数据’%len(resTuple))
    
    cur.close()
    conn.commit()
    conn.close()
    print(‘sql执行成功’)


    更新数据

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #更新一条数据
    update=cur.execute("update user set age=100 where name='kongsh'")
    print('修改后受影响的行数为:',update)
    #查询一条数据
    cur.execute(select * from user where name="kongsh";')
    print(cur.fetchone())
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')


    更新多条数据

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #更新前查询所有数据
    cur.execute("select * from user where name in ('kongsh','wen');")
    print('更新前的数据为:')
    for res in cur.fetchall():
      print (res)
    
    print ('*'*40) 
    #更新2条数据
    sql="update user set age=%s where name=%s"
    update=cur.executemany(sql,[(15,'kongsh'),(18,'wen')])
    
    #更新2条数据后查询所有数据
    cur.execute("select * from user where name in ('kongsh','wen');")
    print('更新后的数据为:')
    for res in cur.fetchall():
      print (res)
    
    
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')


    删除数据

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #删除前查询所有数据
    cur.execute("select * from user;")
    print('删除前的数据为:')
    for res in cur.fetchall():
      print (res)
    
    print ('*'*40) 
    #删除1条数据
    cur.execute("delete from user where id=1")
    
    #删除后查询所有数据
    cur.execute("select * from user;")
    print('删除后的数据为:')
    for res in cur.fetchall():
      print (res)
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')

    删除多条数据

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #删除前查询所有数据
    cur.execute("select * from user;")
    print('删除前的数据为:')
    for res in cur.fetchall():
      print (res)
    
    print ('*'*40) 
    #删除2条数据
    sql="delete from user where id=%s"
    cur.executemany(sql,[(3),(4)])
    
    #删除后查询所有数据
    cur.execute("select * from user;")
    print('删除后的数据为:')
    for res in cur.fetchall():
      print(res)
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')


    事务回滚

    import pymysql
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('pythondb')
    #获取游标
    cur=conn.cursor()
    
    #修改前查询所有数据
    cur.execute("select * from user;")
    print('修改前的数据为:')
    for res in cur.fetchall():
      print (res)
    
    print ('*'*40) 
    #更新表中第1条数据
    cur.execute("update user set name='xiaoxiaoxiaoxiaoren' where id=5")
    
    #修改后查询所有数据
    cur.execute("select * from user;")
    print('修改后的数据为:')
    for res in cur.fetchall():
      print(res)
    print ('*'*40)
    #回滚事务
    conn.rollback()
    cur.execute("select * from user;")
    print('回滚事务后的数据为:')
    for res in cur.fetchall():
      print (res)
    
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')

    插入100条数据到数据库

    import pymysql
    import string,random
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('testdb')
    #获取游标
    cur=conn.cursor()
    
    #创建user表
    cur.execute('drop table if exists user')
    sql="""CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `age` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
    
    cur.execute(sql)
    
    #修改前查询所有数据
    cur.execute("select * from user;")
    print('修改前的数据为:')
    for res in cur.fetchall():
      print(res)
    
    print ('*'*40) 
    #循环插入数据
    words=list(string.ascii_letters)
    sql="insert into user values(%s,%s,%s)"
    for i in range(100):
      random.shuffle(words)#打乱顺序
      cur.execute(sql,(i+1,"".join(words[:5]),random.randint(0,80)))
    
    #插入100条后查询所有数据
    cur.execute("select * from user;")
    print('修改后的数据为:')
    for res in cur.fetchall():
      print (res)
    print ('*'*40)
    
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')

    一次插入多条

    import pymysql
    import string,random
    #打开数据库连接
    conn=pymysql.connect('localhost','root','123456')
    conn.select_db('testdb')
    #获取游标
    cur=conn.cursor()
    
    #创建user表
    cur.execute('drop table if exists user')
    sql="""CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `age` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
    
    cur.execute(sql)
    
    #修改前查询所有数据
    cur.execute("select * from user;")
    print('修改前的数据为:')
    for res in cur.fetchall():
      print (res)
    
    print ('*'*40) 
    #循环插入数据
    words=list(string.ascii_letters)
    sql="insert into user values(%s,%s,%s)"
    random.shuffle(words)#打乱顺序
    cur.executemany(sql,[(i+1,"".join(words[:5]),random.randint(0,80)) for i in range(100) ])
    
    #插入100条后查询所有数据
    cur.execute("select * from user;")
    print('修改后的数据为:')
    for res in cur.fetchall():
      print (res)
    print ('*'*40)
    
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14186797.html
Copyright © 2011-2022 走看看