十四、python访问mysql
发布日期:2021-10-31 07:31:25
浏览次数:11
分类:技术文章
本文共 3517 字,大约阅读时间需要 11 分钟。
PyMySQL
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
python中的DB-API为大多数数据库实现了接口,使用它连接数据库,就可以使用相同的方式操作各数据库。 使用DB-API基本流程
- 引入API模块。
- 获取数据库连接参数,打开数据库连接。
- 执行SQL语句和存储过程。
- 关闭数据库连接
使用pymysql(同时支持python2和3)作为连接mysql数据库的接口。直接使用pip install pymysql安装即可。 注意:pip安装之后使用pycharmimport pymysql可能出现无法使用的情况,此时可直接在pycharm中安装pymysql包。通过File–>Settings–>Project:XXX–>Project Interpreter可以看到所有已安装的包,点击右边绿色+即可添加。 python2.X中还可以使用MySQLdb(仅支持python2),点击 可下载安装。
mysql数据库
mysql中的事务
事务是必须满足4个条件(ACID):
Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)。
- 原子性:一组事务,要么成功;要么撤回。
- 稳定性:有非法数据(外键约束之类),事务撤回。
- 隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
- 可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, - innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里 mysql中autocommit参数默认为开启,若需要多条sql语句同时提交,可以通过start transaction开启事务,通过rollback回滚事务,通过commit提交事务。 查询autocommit参数状态:show variables like autocommit。
python访问mysql
一个典型的执行过程
import pymysqlconn = pymysql.connect(host="192.168.48.136", port=3306, user="xiang", passwd="xiang", db="test")cus = conn.cursor()sql = "select * from test2;"cus.execute(sql)result = cus.fetchall()print(result)cus.close()conn.close()
在实际编码过程中,推荐通过函数形式调用,方便重复使用和修改。
def connect_mysql(): db_config = { 'host': '192.168.48.128', 'port': 3306, 'user': 'xiang', 'passwd': '123456', 'db': 'python', 'charset': 'utf8' } cnx = pymysql.connect(**db_config) return cnx
查询数据
import sysimport pymysql# 打开数据库连接db = pymysql.connect("10.0.0.101","sheng","123456","Sheng_DB" ,charset='utf8')# 使用cursor()方法获取操作游标cursor = db.cursor()# SQL 查询语句sql = "SELECT * FROM student"try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() print(results) print(len(results[0])) for row in results: sid = row[0] gender = row[1] class_id=row[2] sname=row[3] # 打印结果 print("id是:%s,性别:%s,班级编号:%s,姓名:%s" %(sid, gender,class_id,sname )) # print(results)except: print("Error: unable to fetch data")# 关闭数据库连接db.close()
插入数据代码
# -*- coding: utf-8 -*-__author__ = 'ShengLeQi'import pymysql# # 打开数据库连接class MySql(object): def __init__(self,ip,user_name,passwd,db, char='utf8'): self.ip = ip # self.port = port self.username=user_name self.passwd=passwd self.mysqldb=db self.char=char self.MySQL_db = pymysql.connect( host=self.ip, user=self.username, passwd=self.passwd, db=self.mysqldb, charset=self.char) def Sql_exe(self,sql): cursor = self.MySQL_db.cursor() MySQL_sql = sql try: # 执行SQL语句 cursor.execute(MySQL_sql) self.MySQL_db.commit() except: print("Error: unable to fetch data") self.MySQL_db.close() self.MySQL_db.close() # MySql_t=MySql("10.0.0.101","sheng","123456","Sheng_DB",char='utf8' )MySql_t=MySql("10.0.0.101","novel","123456","Novel",char='utf8' ) #Novel#sql="insert into Novel(name,conext) values('name_t','connent_t')"MySql_t.Sql_exe(sql)
修改数据库
import pymysql # 打开数据库连接(ip/数据库用户名/登录密码/数据库名) db = pymysql.connect("localhost", "root", "root", "test") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # SQL 更新语句 sql = "UPDATE user SET name = 'Bob' WHERE id = 1" try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
转载地址:https://blog.csdn.net/weixin_39934221/article/details/80221355 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月01日 06时34分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
impdp异常中断导致的问题(r2第8天)
2019-04-27
生产环境大型sql语句调优实战第一篇(一) (r2笔记第31天)
2019-04-27
生产环境大型sql语句调优实战第一篇(二) (r2笔记32天)
2019-04-27
生产环境sql语句调优实战第四篇(r2笔记41天)
2019-04-27
生产环境sql语句调优实战第五篇(r2笔记41天)
2019-04-27
一些“简单”的linux命令(r2笔记46天)
2019-04-27
使用闪回查询备份数据(r2笔记43天)
2019-04-27
一些极度危险的linux命令(r2笔记49天)
2019-04-27
怎样突破表名30个字符的限制(r2笔记51天)
2019-04-27
海量数据迁移之分区并行抽取(r2笔记53天)
2019-04-27
VXFS启用异步IO导致的严重问题(r2笔记56天)
2019-04-27
数据迁移工具简单分析 (r2笔记59天)
2019-04-27
海量数据迁移之通过rowid切分大表(r2笔记62天)
2019-04-27
关于oracle后台启用的schedule job(r2笔记65天)
2019-04-27
胖客户端程序总结(r3笔记44天)
2019-04-27
简单分析shared pool(二) (r3笔记48天)
2019-04-27
数据库静默安装总结(r3笔记第58天)
2019-04-27
和Null有关的函数(r3笔记第48天)
2019-04-27
关于sysdba,sysoper,dba的区别(r3笔记第62天)
2019-04-27
关于数据库中的一些name(r3笔记第64天)
2019-04-27