# 对于数据库的连接并不是交由程序员管理而是交由连接池管理了,
# 这里的对于connect的close并非真正的关闭连接,而是将连接重新放入连接池中。
# 首先,我是用的数据库模块是:pymysql,没装的pip install pymysql。
# 连接池我们使用DBUtils,使用前 pip install DBUtils

import pymysql
from dbutils.pooled_db import PooledDB
pool = PooledDB(pymysql,0,host='localhost',user='root',passwd='123456',db='new_room_history',port=3306) #0为连接池里的最少连接数
conn = pool.connection()  #以后每次需要数据库连接就是用connection()函数获取连接就好了
cur=conn.cursor()
SQL="select * from table1"
r=cur.execute(SQL)
r=cur.fetchall()
cur.close()
conn.close()


# 多线程操作DB的方法
# # 方法一:
# 每个execute前加上互斥锁
# lock.acquire()
# cursor.execute(command,data)     
# lock.release()

# 方法二:
# 每个线程拥有自己的数据库连接,即在线程调用函数中加上数据库连接代码

# 方法三:
# 所有线程共用一个连接池,需要考虑线程总数和连接池连接数上限的问题