1. 数据库连接概述
如果作者直接使用flask等后端框架编写代码,那么数据库的连接由框架集成好了,肯定是使用了更为可靠的连接池的方式进行连接。如果作者未使用框架,自己使用python进行数据库交互,通过提交sql语句来进行数据库的增删改查,那么建议使用连接池的方式进行数据库连接,本文介绍了两种数据库连接方式,推荐后者连接池进行连接数据库。
2. 使用pymysql模块进行非连接池连接
如果直接使用数据库连接模块pymysql进行连接,可以完成数据库的操作,但不太建议使用在工程方面,性能有瓶颈,不稳定安全,如下是安装了pymysql后进行的单点连接:
pip install pymysql
import pymysql
connect = pymysql.connect(
host=localhost,
port=3306,
user='root',
password='123456',
database='TEST'
)
cursor = connect.cursor()
try:
cursor.execute(sql_show)
connect.commit()
except Exception as e
print("DB is exception")
finally:
cursor.close()
connect.close()
3 使用connector模块进行连接池连接
首先安装对应的模块包:
pip install mysql-connector-python
然后完成相应的配置:
import mysql.connector
# 配置连接池
dbconfig = {
"user": "root",
"password": "123456",
"host": "localhost",
"database": "TEST"
}
cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name="mypool", pool_size=10, **dbconfig)
def get_conn():
# 从连接池中获取一个连接
conn = cnxpool.get_connection()
cursor = conn.cursor()
return conn, cursor
def close_conn(conn, cursor):
# 关闭连接和游标,但连接会放回连接池
cursor.close()
conn.close()
在使用连接池的时候,只需要调用对应的函数拿出一个连接即可操作使用,和pymysql模块的单点连接数据库使用方式无异
# 使用连接池
conn, cursor = get_conn()
try:
print(sql_show)
cursor.execute(sql_show)
conn.commit()
print(subdatadict)
except pymysql.MySQLError as e:
print(f"写入数据库失败 is exception: {e.args[0]}, {e.args[1]}")
conn.rollback()
except Exception as e:
print(f"写入数据库失败 is exception: {e}")
conn.rollback()
finally:
close_conn(conn, cursor)
值得注意的是,一定别忘了写conn.commit()来提交事务,否则数据库内的数据不会因执行sql语句而改变。