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执行成功')

  • 相关阅读:
    使用事件驱动代替定时任务
    MySql中的有条件插入 insert where
    Mac上“您没有权限来打开应用程序”(Big Sur)
    Java反编译反混淆神器
    Java实现开根号运算(不使用数组和String)
    使用vs code搭建Q#开发环境 (Mac)
    离散傅里叶变换DFT入门
    Java的nanoTime()方法
    Eslint提示const关键字被保留
    myBatis分页插件PageHelper的使用及源码详解
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14186797.html
Copyright © 2011-2022 走看看