Python操作mysql数据库
来源:互联网 发布:彩票缩水过滤软件下载 编辑:程序博客网 时间:2024/06/18 06:30
操作步骤:
- python读取MySQL的配置文件;
- 根据读取到的配置文件连接MySQL;
- Python连接MySQL后,进行操作,增删改查。
ConfigParser模块
ConfigParser是Python的自带模块,可以读取配置文件。ini是常见的配置文件格式。
配置文件的格式:
[sesion]
host=127.0.0.1
port=3306
user=root
password=123456
db_name=test
代码操作
project:
配置文件:
mysql_db.py
#config=utf8import osimport configparser as cparserimport pymysql.cursors#--------读取配置文件-----------#获取当前脚本的路径base_dir = os.path.dirname(os.path.dirname(__file__))base_dir = str(base_dir)base_dir = base_dir.replace('\\','/')file_path = base_dir + '/db_conf.ini'print(file_path)#读取配置文件cf = cparser.ConfigParser()cf.read(file_path)host = cf.get("mysql_conf",'host')port = cf.get("mysql_conf",'port')user = cf.get("mysql_conf",'user')password = cf.get("mysql_conf",'password')db_name = cf.get("mysql_conf",'db_name')print(host,port,user,password,db_name)#----------python操作MySQL----------class DB(): #__init__()方法连接mysql数据库 def __init__(self): try: self.connection = pymysql.connect(host = host, user = user, password = password, db = db_name, charset = 'utf8mb4', cursorclass = pymysql.cursors.DictCursor ) except pymysql.err.OperationalError as e: print(e) print("连接失败") #建立数据表 def create_table(self): sql1 = "create table students(" \ "id int not null," \ "name varchar(20) not null," \ "sex varchar(10) not null," \ "tall float," \ "address varchar(255)" \ ");" sql2 = "alter table students add constraint id_pk primary key (id);" print(sql1) print(sql2) with self.connection.cursor() as cursor: cursor.execute(sql1) cursor.execute(sql2) self.connection.commit() #删除表 def drop_table(self,table_name): sql3 = "drop table " + table_name + ";" print(sql3) with self.connection.cursor() as cursor: cursor.execute(sql3) self.connection.commit() #清空数据表 def clear_table(self,table_name): sql4 = "truncate table"+" "+table_name + ";" print(sql4) with self.connection.cursor() as cursor: cursor.execute(sql4) self.connection.commit() #插入数据(插入的数据封装成字典) def insert(self,table_name,table_data): for i in table_data: #遍历字典获取每一个key值,再获取每个value,把values str()为字符串的形式, # 因为在sql语句中,值是字符串的形式的。 table_data[i] = "'" + str(table_data[i]) + "'" #print(table_data[i]) key = ",".join(table_data.keys()) #以逗号分割keys value = ",".join(table_data.values()) #以逗号分割values sql = "insert into" + " " + table_name + "(" +key + ")"+"values" + "(" + value + ")" + ";" print(sql) with self.connection.cursor() as cursor: cursor.execute(sql) self.connection.commit() #断开数据库连接 def close(self): self.connection.close()if __name__ == "__main__": db = DB() #db.create_table() db.clear_table(table_name="students") table_data = {"id":"1","name":"liyue","sex":"boy"} db.insert(table_name="students",table_data=table_data) #db.drop_table(table_name="students")
test_data.py
#coding=utf8from .mysql_db import DB#创建测试数据(插入一张数据表),多张表需要另外封装字典。datas = [ {"id":"1","name":"liyu","sex":"boy","tall":"190","address":"china"}, {"id":"2","name":"liyue","sex":"boy","tall":"189","address":"china"}, {"id":"3","name":"liudong","sex":"girl","tall":"180","address":"china"}, {"id":"4","name":"liu","sex":"boy","tall":"170","address":"china"}, {"id":"5","name":"liyue","sex":"boy","tall":"160","address":"china"}, {"id":"6","name":"liyue","sex":"boy","tall":"170","address":"china"}, {"id":"7","name":"liyue","sex":"boy","tall":"150","address":"china"}, {"id":"8","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"9","name":"liyue","sex":"boy","tall":"190","address":"china"}, {"id":"10","name":"liyue","sex":"boy","tall":"160","address":"china"}, {"id":"11","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"12","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"13","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"14","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"15","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"16","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"17","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"18","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"19","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id":"20","name":"liyue","sex":"boy","tall":"180","address":"china"}, {"id": "21", "name": "liyu", "sex": "boy", "tall": "190", "address": "china"}, {"id": "22", "name": "liyue", "sex": "boy", "tall": "189", "address": "china"}, {"id": "23", "name": "liudong", "sex": "girl", "tall": "180", "address": "china"}, {"id": "24", "name": "liu", "sex": "boy", "tall": "170", "address": "china"}, {"id": "25", "name": "liyue", "sex": "boy", "tall": "160", "address": "china"}, {"id": "26", "name": "liyue", "sex": "boy", "tall": "170", "address": "china"}, {"id": "27", "name": "liyue", "sex": "boy", "tall": "150", "address": "china"}, {"id": "28", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "29", "name": "liyue", "sex": "boy", "tall": "190", "address": "china"}, {"id": "30", "name": "liyue", "sex": "boy", "tall": "160", "address": "china"}, {"id": "31", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "32", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "33", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "34", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "35", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "36", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "37", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "38", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "39", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"}, {"id": "40", "name": "liyue", "sex": "boy", "tall": "180", "address": "china"} ]#出入测试数据def test_data(): db = DB() db.clear_table(table_name="students") for i in datas: db.insert(table_name="students",table_data=i) db.close()if __name__ == "__main__": test_data()数据库查询操作:
在上面的类中增加查询的方法:
fetchone()方法获取一个结果集,返回是衣蛾对象,字典形式;
#查询获取数据 def select1(self,what,table_name,column_name,value): #select * from table; sql = "select "+what+" from "+table_name + " where " + column_name +" =" +"'"+value+"'" + ";" print(sql) with self.connection.cursor() as cursor: cursor.execute(sql) result = cursor.fetchone() #fetchone()方法获取一个查询结果集,返回的是一个对象,字典形式,可以通过字典的方法获取key和value print(result['pic_id']) self.connection.commit()返回:
127.0.0.1 3306 root 123456 testselect * from test1 where id ='1 ';12345 #获取的pic_id对应的值fetchall()方法返回数据表中所有的行数据,返回的是一个列表,列表的元素是一个个字典,一个字典就是行数据;
#查询获取数据 def select1(self,what,table_name,column_name,value): #select * from table; sql = "select "+what+" from "+table_name + " where " + column_name +" =" +"'"+value+"'" + ";" print(sql) with self.connection.cursor() as cursor: cursor.execute(sql) result = cursor.fetchall()#返回一个列表,列表的元素是一个个字典,每一个字典就是一行数据; print(result) pic_id = result[0]['pic_id'] #可以通过字典的形式获取每一个字典的key和value值; print(pic_id) self.connection.commit()返回:
select * from test1 where id ='1 ';[{'id': 1, 'type': 'image', 'pic_id': 12345}]12345
阅读全文
0 0
- Python操作Mysql数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python 操作mysql 数据库
- python操作mysql数据库
- python 操作 mysql数据库
- python操作MySQL数据库
- python操作MySQL数据库
- Python操作MySQL数据库
- Python操作mysql数据库
- python操作MySQL数据库
- javaweb 每天定时执行任务
- 关注程序性能(2) jstack, jmap, jvisualvm
- springMVC 注解及配置文件详解
- LeetCode: 104. Maximum Depth of Binary Tree
- The R Formula Method: The Bad Parts
- Python操作mysql数据库
- PHP使用Curl扩展Post多维数组的例子
- [LeetCode] Binary Search Tree Iterator
- 一种基于FreeRTOS的CPU使用率测算方法及原理介绍
- QQ启动时:Initialization failure:0x0000000C 解决方案
- nginx负载均衡简单配置
- CTS Verifier:Widget Framework Test如何测试?
- Oracle使用——PLSQL的中文乱码、特别注意!
- 顺序栈的实现(c语言)