Python数据库:MYSQL讲解介绍

python

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于我偶像龟叔,作者我偶像龟叔

 

MYSQL是目前应用最广泛、普及度最高的开源关系型数据库。体积小、速度快、总体拥有成本低,开源是使得它广为普及的主要原因。

今天将 Python 与 Mysql 的结合,两者进行交互,一起来学习吧!

1、创建数据库连接

import mysql.connector

config = {

"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", "http://www.google.cn/chrome/")

cursor.execute(insert_sql, values)

#插入多条数据

values = [

("Chrome", "http://www.google.cn/chrome/"),

("Firefox", "http://www.firefox.com/"),

("Safari2", "https://www.apple.com.cn/safari/")

]

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`="http://www.firefox.com.cn" 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、实现数据库连接池

如果每次进行操作前都去做连接请求,是非常消耗资源的,尤为考虑到并发问题的时候。

数据库连接池预先创建出一些数据库连接,然后缓存起来,避免出现重复创建和销毁连接付出昂贵的代价,很好的解决这个问题。

import mysql.connector.pooling

config = {...}

pool = mysql.connector.pooling.MySQLConnectionPool(

**config,

pool_size=10

)

con_pool = pool.get_connection()

以上是 Python数据库:MYSQL讲解介绍 的全部内容, 来源链接: utcz.com/z/530161.html

回到顶部