Python操作MySQL数据库的示例代码


Posted in Python onJuly 13, 2020

1. MySQL Connector

1.1 创建连接

import mysql.connector
 config={
   "host":"localhost","port":"3306",
   "user":"root","password":"password",
   "database":"demo"
 }
 con=mysql.connector.connect(**config)
 import mysql.connector
 config={
   "host":"localhost","port":"3306",
   "user":"root","password":"password",
   "database":"demo"
 }
 con=mysql.connector.connect(**config)

1.2 Cursor

import mysql.connector
 con=mysql.connector.connect(
   host="localhost",port="3306",
   user="root",password="password",
   database="demo"
 )
 cursor=con.cursor()
 sql="SELECT empno,job,sal FROM t_bonus;"
 cursor.execute(sql)
 print(type(cursor))
 for i in cursor:
   print(i)
 con.close()
 
 Result:
   <class 'mysql.connector.cursor_cext.CMySQLCursor'>
   (7369, 'CLERK', Decimal('8000.00'))
   (7499, 'SALESMAN', Decimal('1600.00'))
   (7521, 'SALESMAN', Decimal('1250.00'))
   (7566, 'MANAGER', Decimal('2975.00'))
   (7654, 'SALESMAN', Decimal('1250.00'))
   (7698, 'MANAGER', Decimal('2850.00'))
   (7782, 'MANAGER', Decimal('2450.00'))
   (7788, 'ANALYST', Decimal('3000.00'))
   (7839, 'PRESIDENT', Decimal('5000.00'))
   (7844, 'SALESMAN', Decimal('1500.00'))
   (7900, 'CLERK', Decimal('950.00'))
   (7902, 'ANALYST', Decimal('3000.00'))
   (7934, 'CLERK', Decimal('1300.00'))

1.3 SQL注入攻击

  1. username=1 OR 1=1 password=1 OR 1=1
  2. 在使用字符串直接拼接时OR之前不管对错,与OR结合都为true
  3. 解决方法——预编译(也可以提高速度)

1.4 事务管理和异常处理

sql连接和使用异常处理异常

import mysql.connector
 try:
   con=mysql.connector.connect(
     host="localhost",port="3306",
     user="root",password="password",
     database="demo"
   )
   con.start_transaction()
   cursor=con.cursor()
   sql="INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   cursor.execute(sql,(60,"SALES","HUBAI"))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 finally:
   if "con" in dir():
     con.close()

1.5 删除数据

import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "DELETE FROM t_dept WHERE deptno=%s"
   cursor.execute(sql, (70,))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

executemany() 反复执行一条SQL语句

import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   date=[[70,"SALES","BEIJING"],[80,"ACTOR","SHANGHAI"]]
   cursor.executemany(sql, date)
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

2. 数据库连接池

  1. 数据库的连接是昂贵的,一个连接要经过TCP三次握手,四次挥手,而且一台计算机的最大线程数也是有限的
  2. 数据库连接池技术就是先创建好连接,再直接拿出来使用
import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   cursor.execute(sql, (70, "SALES", "HUBAI"))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

以上就是Python操作MySQL数据库的示例代码的详细内容,更多关于Python操作MySQL数据库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现基于HTTP文件传输实例
Nov 08 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python操作mysql数据库
Mar 05 Python
使用python 3实现发送邮件功能
Jun 15 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
Puppeteer使用示例详解
Jun 20 Python
python命令行工具Click快速掌握
Jul 04 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
keras中的卷积层&amp;池化层的用法
May 22 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
Python基于正则表达式实现计算器功能
Jul 13 #Python
python输出结果刷新及进度条的实现操作
Jul 13 #Python
python实现图像外边界跟踪操作
Jul 13 #Python
Python实现打包成库供别的模块调用
Jul 13 #Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 #Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 #Python
Python使用pyexecjs代码案例解析
Jul 13 #Python
You might like
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
js版本A*寻路算法
2006/12/22 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
Python 探针的实现原理
2016/04/23 Python
python类中super()和__init__()的区别
2016/10/18 Python
python入门教程 python入门神图一张
2018/03/05 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
试述DBMS的主要功能
2016/11/13 面试题
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
供用电专业求职信
2014/07/07 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
《三国志》赏析
2019/08/27 职场文书
golang操作rocketmq的示例代码
2022/04/06 Golang