Python数据库:MYSQL讲解介绍
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
以下文章来源于我偶像龟叔 , 作者我偶像龟叔
文章插图
MYSQL是目前应用最广泛、普及度最高的开源关系型数据库 。 体积小、速度快、总体拥有成本低 , 开源是使得它广为普及的主要原因 。
今天将 Python 与 Mysql 的结合 , 两者进行交互 , 一起来学习吧!
1、创建数据库连接import mysql.connectorconfig = {'host': 'localhost','port': '3306','user': 'root','password': '','database': 'python'}con = mysql.connector.connect(**config)cursor = con.cursor() #游标 , 用于执行sql语句
2、创建数据表create_table_sql = "CREATE TABLE `browser` (" \"`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT 'id', " \"`name` VARCHAR(128) COMMENT '名字', " \"`url` VARCHAR(255) COMMENT '官网'" \")"cursor.execute(create_table_sql)
3、创建索引
_index1 = "ALTER TABLE `browser` ADD UNIQUE INDEX name(name)" #唯一索引_index2 = "CREATE INDEX url ON `browser`(url)" #普通索引for sql in [_index1, _index2]:cursor.execute(sql)
文章插图
创建表结构和添加字段索引个人建议客户端手动操作 , 一行一行代码操作效率实在太低 。 这边公众号回复"mysql"获取相关资源 。
4、数据增删查改
#插入单条数据insert_sql = "INSERT INTO `browser`(name, url) VALUES (%s, %s)"values = ('Chrome', "")cursor.execute(insert_sql, values) #插入多条数据values = [('Chrome', ""),('Firefox', ""),('Safari2', "")]cursor.executemany(insert_sql, values) #查询数据select_sql = "SELECT * FROM `browser`"cursor.execute(select_sql)print(cursor.fetchone()) #获取单条数据print(cursor.fetchall()) #获取全部数据#更新数据update_sql = "UPDATE `browser` SET `url`='' WHERE `name`='Firefox';"cursor.execute(update_sql)#删除数据delete_sql = "DELETE FROM `browser` WHERE `name` = %s"cursor.execute(delete_sql, ['Safari'])
5、关于抵御注入攻击
由于Sql语句是解释性语言 , 所以在拼接Sql语句的时候 , 容易被注入恶意的Sql语句 。
文章插图
sql语句编译过程中 , 关键字被解析过 , 所以向编译后的sql语句传入参数 , 都被当字符串处理 , 数据库不会解析其中注入的sql语句 。
文章插图
6、事务控制与异常处理
try:con.start_transaction()cursor = con.cursor()delete_sql = "DELETE FROM `browser` WHERE `name` = %s"cursor.execute(delete_sql, ['Firefox'])except Exception as e:con.rollback() #回滚else:con.commit() #提交
7、实现数据库连接池
如果每次进行操作前都去做连接请求 , 是非常消耗资源的 , 尤为考虑到并发问题的时候 。
数据库连接池预先创建出一些数据库连接 , 然后缓存起来 , 避免出现重复创建和销毁连接付出昂贵的代价 , 很好的解决这个问题 。
【Python数据库:MYSQL讲解介绍】import mysql.connector.poolingconfig = {...}pool = mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=10)con_pool = pool.get_connection()
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作
- 解决多版本的python冲突问题
- 学习python第二弹
- pymysql 连接 MySQL 实现简单登录
- Python中文速查表-Pandas 基础
- 零基础小白Python入门必看:通俗易懂,搞定深浅拷贝
- Python 使用摄像头监测心率!这么强吗?