使用python连接mysql数据库之pymysql模块的使用
安装pymysql
pipinstallpymysql
2|0使用pymysql
2|1使用数据查询语句
查询一条数据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'}
"""
总结
以上所述是小编给大家介绍的使用python连接mysql数据库之pymysql模块的使用,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短