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实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python常用内置模块之xml模块(详解)
May 23 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
Python实现抢购IPhone手机
Feb 07 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 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对象的浅复制与深复制的实例详解
2017/10/26 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
jquery获取radio值实例
2014/10/16 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
八大排序算法的Python实现
2021/01/28 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
实习报告评语
2014/04/26 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
社会公德演讲稿
2014/05/20 职场文书
新文化运动的口号
2014/06/21 职场文书
国贸专业求职信
2014/06/28 职场文书
树转促学习心得体会
2014/09/10 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
2015年资料员工作总结
2015/04/25 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
暂住证证明
2015/06/19 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
如何用PHP实现多线程编程
2021/05/26 PHP
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
比较几种Redis集群方案
2021/06/21 Redis
python之json文件转xml文件案例讲解
2021/08/07 Python