关于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'}
"""
以上就是本次介绍的全部知识点内容,感谢大家的阅读和对毛票票的支持。