数据连接
Posted py-web
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据连接相关的知识,希望对你有一定的参考价值。
?
Pymysql
- 安装??
- 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()?
?
数据库连接池DBUtils
- 安装??
- 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()
自己封装的sqlhelper
- 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)))??
以上是关于数据连接的主要内容,如果未能解决你的问题,请参考以下文章