使用python导入pymysql库操作mysql(增删改查)

2018-06-18 00:39:06来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

首先需要安装pymysql,在命令行用命令:pip install pymysql

安装完成后,连接mysql数据库:

import pymysql.cursors

'''
连接数据库
'''

#使用pymysql指令连接数据库

connection = pymysql.connect(host = '127.0.0.1', #要连接的数据库的IP地址

user = 'root', #登录的账户名,如果登录的是最高权限账户则为root
password = '123456', #对应的密码
db = 'iris', #要连接的数据库
charset = 'utf8mb4', #设置编码格式
#返回到Python的结果,以什么方式存储,如Dict.Cursor是以字典的方式存储
#如果不加这行数据是以元组方式返回
cursorclass = pymysql.cursors.DictCursor
)

这样我们就建立了python 同mysql 的连接

 

创建表
  try:

  '''
  创建表
  '''
  # 使用cursor()方法获取操作游标
  with connection.cursor() as cursor:
  # 如果数据表已经存在使用 execute() 方法删除表。
    cursor.execute("drop table if EXISTS users")
    sql = '''create table users (
    id int(11) not null auto_increment,
    email varchar(255) collate utf8_bin not null,
    password varchar(255) collate utf8_bin not null,
       primary key (id)

)
engine = InnoDB default charset=utf8 collate=utf8_bin
auto_increment=1;
'''
cursor.execute(sql)

  except:
    # 发生错误时回滚
    connection.rollback()

  finally:
    # 关闭连接
    connection.close()
    插入数据
    # 从数据库链接中得到cursor的数据结构
    with connection.cursor() as cursor:
      sql = " insert into users(email, password) VALUES (%s, %s)"
      cursor.execute(sql,('webmaster@python.org','very_secret'))
      # 执行到这一行指令时才是真正改变了数据库,之前只是缓存在内存中
      connection.commit()
      批量插入数据
      '''
      批量插入数据
      '''
#读取文件
  with open('iris.csv', 'r', encoding='utf-8', newline='') as f:
    i = 0 #用来记录读取文件中数据的的次数
    z = 0 #用来记录读取文件中数据的的次数
    list = []
    for line in f:
      strs = line.split(',')
      data = (strs[0], strs[1], strs[2], strs[3], strs[4].replace("\n","")) #数据的最后一行会有一个\n换行符,用replace替换掉
      list.append(data)
      i += 1
      z += 1
      if i >= 10: #用于现在一次插入多少条这里是10条插入一次
        with connection.cursor() as cursor:
        sql = "insert into iris(sepal_length, sepal_width, petal_length, petal_width, uspecies) VALUES (%s, %s, %s, %s, %s)"
        cursor.executemany(sql, list) #批量添加数据时 要用executemany
        connection.commit()
        print("插入{}条数据,已插入{}条数据".format(i, z))
        i = 0 #对计数归零
        list.clear() #清理数据列表

      if i > 0 : # 循环文件完毕后,对剩余的数据进行插入,(例如小于10的剩余数据,比如你的文件有55行,剩余的5行就要这样插入)
        cursor.executemany(sql, list)
        connection.commit()
查询数据
'''
查询数据
'''
#单一数据
with connection.cursor() as cursor:
  sql = " select id, email, password from users where email = %s"
  cursor.execute(sql,('sfs1100@126.com'))
  result = cursor.fetchone() #fetchone()只取出第一条结果
  print(result)
  print(type(result))
#多条数据
with connection.cursor() as cursor:
  sql = " select * from iris where sepal_length > %s"
  cursor.execute(sql, (3))
  result = cursor.fetchall() #fetchone()取出查询后的所有数据
  print(result)
  print(type(result))
  for each in result:
  print(each['uspecies'])
更新数据
'''
更新数据
'''
with connection.cursor() as cursor:
  sql = " update users set email = %s where password = %s"
  cursor.execute(sql, ('sfs1100@126.com', 'very_secret'))
  connection.commit()
删除数据
'''
删除数据
'''
with connection.cursor() as cursor:
  sql = "delete from users where email = %s"
  cursor.execute(sql, ('sfs1100@126.com'))
  connection.commit()

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python pickle模块

下一篇:创建web站点(单例模式)