关于pymysql模块的使用以及代码详解
pymysql模块的使用
查询一条数据fetchone()
frompymysqlimport* conn=connect( host='127.0.0.1', port=3306,user='root', password='123456', database='itcast', charset='utf8') #创建游标 c=conn.cursor() #执行sql语句 c.execute("select*fromstudent") #查询一行数据 result=c.fetchone() print(result) #关闭游标 c.close() #关闭数据库连接 conn.close() """ (1,'张三',18,b'\x01') """
查询多条数据fetchall()
frompymysqlimport* conn=connect( host='127.0.0.1', port=3306,user='root', password='123456', database='itcast', charset='utf8') #创建游标 c=conn.cursor() #执行sql语句 c.execute("select*fromstudent") #查询多行数据 result=c.fetchall() foriteminresult: print(item) #关闭游标 c.close() #关闭数据库连接 conn.close() """ (1,'张三',18,b'\x01') (2,'李四',19,b'\x00') (3,'王五',20,b'\x01') """
更改游标的默认设置,返回值为字典
frompymysqlimport* conn=connect( host='127.0.0.1', port=3306,user='root', password='123456', database='itcast', charset='utf8') #创建游标,操作设置为字典类型 c=conn.cursor(cursors.DictCursor) #执行sql语句 c.execute("select*fromstudent") #查询多行数据 result=c.fetchall() foriteminresult: print(item) #关闭游标 c.close() #关闭数据库连接 conn.close() """ {'id':1,'name':'张三','age':18,'sex':b'\x01'} {'id':2,'name':'李四','age':19,'sex':b'\x00'} {'id':3,'name':'王五','age':20,'sex':b'\x01'} """
返回一条数据时也是一样的。返回字典或者时元组看个人需要。
2|2使用数据操作语句
执行增加、删除、更新语句的操作其实是一样的。只写一个作为示范。
frompymysqlimport* conn=connect( host='127.0.0.1', port=3306,user='root', password='123456', database='itcast', charset='utf8') #创建游标 c=conn.cursor() #执行sql语句 c.execute("insertintostudent(name,age,sex)values(%s,%s,%s)",("小二",28,1)) #提交事务 conn.commit() #关闭游标 c.close() #关闭数据库连接 conn.close()
和查询语句不同的是必须使用commit()提交事务,否则操作就是无效的。
3|0编写数据库连接类
普通版
MysqlHelper.py
frompymysqlimportconnect,cursors classMysqlHelper: def__init__(self, host="127.0.0.1", user="root", password="123456", database="itcast", charset='utf8', port=3306): self.host=host self.port=port self.user=user self.password=password self.database=database self.charset=charset self._conn=None self._cursor=None def_open(self): #print("连接已打开") self._conn=connect(host=self.host, port=self.port, user=self.user, password=self.password, database=self.database, charset=self.charset) self._cursor=self._conn.cursor(cursors.DictCursor) def_close(self): #print("连接已关闭") self._cursor.close() self._conn.close() defone(self,sql,params=None): result:tuple=None try: self._open() self._cursor.execute(sql,params) result=self._cursor.fetchone() exceptExceptionase: print(e) finally: self._close() returnresult defall(self,sql,params=None): result:tuple=None try: self._open() self._cursor.execute(sql,params) result=self._cursor.fetchall() exceptExceptionase: print(e) finally: self._close() returnresult defexe(self,sql,params=None): try: self._open() self._cursor.execute(sql,params) self._conn.commit() exceptExceptionase: print(e) finally: self._close()
该类封装了fetchone、fetchall、execute,省去了数据库连接的打开和关闭和游标的打开和关闭。
下面的代码是调用该类的小示例:
fromMysqlHelperimport* mysqlhelper=MysqlHelper() ret=mysqlhelper.all("select*fromstudent") foriteminret: print(item) """ {'id':1,'name':'张三','age':18,'sex':b'\x01'} {'id':2,'name':'李四','age':19,'sex':b'\x00'} {'id':3,'name':'王五','age':20,'sex':b'\x01'} {'id':5,'name':'小二','age':28,'sex':b'\x01'} {'id':6,'name':'娃哈哈','age':28,'sex':b'\x01'} {'id':7,'name':'娃哈哈','age':28,'sex':b'\x01'} """
上下文管理器版
mysql_with.py
frompymysqlimportconnect,cursors classDB: def__init__(self, host='localhost', port=3306, db='itcast', user='root', passwd='123456', charset='utf8'): #建立连接 self.conn=connect( host=host, port=port, db=db, user=user, passwd=passwd, charset=charset) #创建游标,操作设置为字典类型 self.cur=self.conn.cursor(cursor=cursors.DictCursor) def__enter__(self): #返回游标 returnself.cur def__exit__(self,exc_type,exc_val,exc_tb): #提交数据库并执行 self.conn.commit() #关闭游标 self.cur.close() #关闭数据库连接 self.conn.close()
如何使用:
frommysql_withimportDB withDB()asdb: db.execute("select*fromstudent") ret=db.fetchone() print(ret) """ {'id':1,'name':'张三','age':18,'sex':b'\x01'} """
以上就是本次介绍的全部知识点内容,感谢大家的阅读和对毛票票的支持。