当前位置:Gxlcms > 数据库问题 > 浅谈Python访问MySQL的正确姿势

浅谈Python访问MySQL的正确姿势

时间:2021-07-01 10:21:17 帮助过:52人阅读


我们以 PyMySQL 模块为例,先来看看最常见的用法:以元组形式返回查询记录。如果把代码中的 pymysql 改为 MySQLdb,可以轻松切换成 mysqlclient 模块。

>>> import pymysql
>>> db = pymysql.connect(
  host = ‘localhost‘,
  user = ‘xufive‘,
  password = ‘********‘,
  db = ‘demo‘,
  charset = ‘utf8‘
)
>>> cursor = db.cursor()
>>> cursor.execute(‘select * from member where id = %s‘, (100,))
1
>>> print(cursor.fetchall())
((100, ‘370103********0012‘, ‘*9EE8E3304D69C3E9260F19C224EA5852129BF030‘, ‘王茁洋‘, ‘男‘, datetime.date(****, **, **), ‘‘, ‘济南‘, ‘济南泉景小学‘, ‘186********‘, Decimal(‘1812.50‘)),)
>>> cursor.close()
>>> db.close()

姿势2:以字典形式返回查询记录

查询结果以元组形式返回,有很多不便,我们需要知道元组各元素对应的是表结构中的哪一个字段(列)。下面的代码,实现了以字典形式返回查询记录。同样的,如果把代码中的 MySQLdb 改为 pymysql,可以轻松切换成 PyMySQL 模块。

>>> import MySQLdb.cursors
>>> db = MySQLdb.connect(
  host = ‘localhost‘,
  user = ‘xufive‘,
  password = ‘********‘,
  db = ‘demo‘, 
  charset = ‘utf8‘,
  cursorclass = MySQLdb.cursors.DictCursor
)
>>> with db.cursor() as cursor:
  sql = ‘select * from member where id = %s‘
  cursor.execute(sql, (100,))
  print(cursor.fetchall())
 1
({‘id‘: 100, ‘idcard‘: ‘370103********0012‘, ‘passwd‘: ‘*9EE8E3304D69C3E9260F19C224EA5852129BF030‘, ‘name‘: ‘王茁洋‘, ‘sex‘: ‘男‘, ‘birthday‘: datetime.date(****, **, **), ‘title‘: ‘‘, ‘address‘: ‘济南‘, ‘club‘: ‘济南泉景小学‘, ‘phone‘: ‘186********‘, ‘rating‘: Decimal(‘1812.50‘)},)

姿势3:事务回滚

事务是关系型数据库的重要特性,NoSQL数据库、分布式数据库通常会淡化、甚至放弃事务。所谓事务是将一组DML(insert、update、delete)语句组合在一起形成一个逻辑单元,这些操作要么全部执行成功提交(commit),如果不成功就要回退到事务开始之前的状态(rollback),以确保不会停留在错误的中间状态。下面的代码演示了 MySQL 典型的事务回滚应用。

>>> import pymysql
>>> db = pymysql.connect(
  host = ‘localhost‘,
  user = ‘xufive‘,
  password = ‘********‘,
  db = ‘demo‘,
  charset = ‘utf8‘
)

def transaction(db):
try:
db.begin()
# 此处加入出错之后需要回滚的DML(insert、update、delete)语句
db.commit()
return True
except:
db.rollback()
return False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程www.piaodoo.com。

浅谈Python访问MySQL的正确姿势

标签:团队   资料   clu   mys   select   pymysql   action   关系   不用   

人气教程排行