小菜鸟学前端 2018-07-11 09:30:24 大家早上好啊,今天我们继续学习python操作MySQL(增删改查)。 大数据机器学习数据分析爬虫Python开发爱好者,MySQL 是我们经常接触的数据库,它的优点好处我就不说了,(其实本人也说不出什么,反正是常用的数据库)那么我们如何使用python 对mysql数据库进行操作呢。下面我来给大家说说。 首先连接mysql 在建立连接前我们的python 要安装pymsql pip install pymysql 在命令行里输入 pip install pymysql 下面打开我们的IDE 我使用的是pycharm # !/usr/bin/env python # -*- coding:utf-8 -*- ''' 1.0 python连接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(" ","")) #数据的最后一行会有一个 换行符,用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() |
|