安装??
pip?install?PyMySQL
#?-*-?coding:?utf-8?-*-??
import?pymysql??
conn?=?pymysql.connect(host="192.168.32.71",?user="root",password="redhat",database="my_sql",charset="utf8")??
cursor?=?conn.cursor(cursor=pymysql.cursors.DictCursor)??
??
?
sql?=?"select?*?from?name"??
res?=?cursor.execute(sql)??
print(cursor.fetchall())??
??
?
#?[{‘name‘:?‘peach‘,?‘id‘:?1,?‘age‘:?25},?{‘name‘:?‘taoiz‘,?‘id‘:?2,?‘age‘:?23}]??
cursor.close()??
conn.close()?
安装??
pip?install?DBUtils?-i?https://pypi.douban.com/simple??
??
?
??
?
#?数据库连接池??
#?-*-?coding:?utf-8?-*-??
import?pymysql??
from?DBUtils.PooledDB?import?PooledDB??
POOL?=?PooledDB(??
????creator=pymysql,??#?使用链接数据库的模块??
????maxconnections=6,?#?连接池允许的最大连接数,0和None表示不限制连接数??
????mincached=2,??????#?初始化时,链接池中至少创建的空闲的链接,0表示不创建??
????maxcached=5,??????#?链接池中最多闲置的链接,0和None不限制??
????maxshared=3,??????#?链接池中最多共享的链接数量,0和None表示全部共享。PS:?无用,因为pymysql和MySQLdb等模块的?threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。??
??
?
????blocking=True,????#?连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错??
????maxusage=None,????#?一个链接最多被重复使用的次数,None表示无限制??
????setsession=[],????#?开始会话前执行的命令列表。如:["set?datestyle?to?...",?"set?time?zone?..."]?比如设置数据库的开始时间?set?firstday=3??
??
?
????ping=0,??
???????????????????????#?ping?MySQL服务端,检查是否服务可用。??
???????????????????????#??如:0?=?None?=?never,??
???????????????????????#?1?=?default?=?whenever?it?is?requested,??
???????????????????????#?2?=?when?a?cursor?is?created,??
???????????????????????#?4?=?when?a?query?is?executed,??
???????????????????????#?7?=?always??
????host="192.168.32.71",??
????port=3306,??
????user="root",??
????password="redhat",??
????charset="utf8",??
????db="my_sql"??
)??
??
?
#?使用??
conn?=?POOL.connection()??#?pymysql?-?conn??
cur?=?conn.cursor(cursor=pymysql.cursors.DictCursor)??
??
?
res?=?cur.execute("select?*?from?name")??
print(cur.fetchall())??
#?[{‘name‘:?‘peach‘,?‘id‘:?1,?‘age‘:?25},?{‘name‘:?‘taoiz‘,?‘id‘:?2,?‘age‘:?23}]??
??
?
#?关闭??
cur.close()??
conn.close()
from?dbpool?import?POOL??
import?pymysql??
??
?
def?create_conn():??
????conn?=?POOL.connection()??
????cursor?=?conn.cursor(cursor=pymysql.cursors.DictCursor)??
????return?conn,cursor??
??
?
def?close_conn(conn,cursor):??
????cursor.close()??
????conn.close()??
??
?
def?insert(sql,args):??
????conn,cursor?=?create_conn()??
????res?=?cursor.execute(sql,args)??
????conn.commit()??
????close_conn(conn,cursor)??
????return?res??
??
?
def?fetch_one(sql,args):??
????conn,cursor?=?create_conn()??
????cursor.execute(sql,args)??
????res?=?cursor.fetchone()??
????close_conn(conn,cursor)??
????return?res??
??
?
def?fetch_all(sql,args):??
????conn,cursor?=?create_conn()??
????cursor.execute(sql,args)??
????res?=?cursor.fetchall()??
????close_conn(conn,cursor)??
????return?res??
??
?
#?sql?=?"insert?into?users(name,age)?VALUES?(%s,?%s)"??
??
?
#?insert(sql,("mjj",9))??
??
?
sql?=?"select?*?from?users?where?name=%s?and?age=%s"??
??
?
print(fetch_one(sql,("mjj",9)))??