一、安装 pymysql 模块
pip install pymysql # python 3.x
二、利用pymysql操作mysql
# 导入模块
import pymysql
# 连接数据库
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='数据库名')
# 获取到数据库的指针
cursor = conn.cursor()
# 改变返回数据的类型(可以改为字典、列表等)
# 在默认情况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行查询后每条记录的结果以列表(list)表示。
# 如果要返回字典(dict)表示的记录,就要设置cursorclass参数为pymysql.cursors.DictCursor类。
cursor = conn.cursor(cursor = pymysql.cursors.DictCursor)
sql = '需要执行的 SQL 语句'
# 执行sql语句,向数据库添加信息 返回对数据库的影响行数
ret = cursor.execute(sql)
# 字符串拼接
ret = cursor.execute('sql%s',(name))
# 获取数据库内容(跟指针的位置相关)
content = cursor.fetchone() # 获取一条内容
content = cursor.fetchall() # 获取所有的内容
content = cursor.fetchmany(3) # 获取指定数值的内容
# 改变指针的位置(负数向上,正数向下)
cursor.scroll(-1,mode='relative') # 相对当前的位置移动
cursor.scroll(2,mode='absolute') # 相对绝对的位置移动
# 将要执行的 SQL 语句提交到数据库
conn.commit()
''' 关闭 '''
cursor.close()
conn.close()
三、pymysql 中对数据库的事务操作
import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='数据库')
cursor = conn.cursor()
try:
insertSQL0 = 'INSERT INTO ACCOUNT2 (name,balance) VALUES ("oldboy",4000),("oldboy2",10000)'
insertSQL1 = 'UPDATE account2 SET balance=balance-30 WHERE name="yuan"'
insertSQL2 = 'UPDATE account2 SET balance=balance+30 WHERE name="xiaolv"'
cursor.execute(insertSQL0)
conn.commit()
cursor.execute(insertSQL1)
# 防止SQL注入
'''
cursor.execute('SELECT * FROM 表名 WHERE name=%s',('小明')) 无命名
cursor.execute('SELECT * FROM 表名 WHERE name=%(us)',{us:'小明'}) 命名
'''
raise Exception # 如果SQL语句执行失败,获取到错误
cursor.execute(insertSQL2)
cursor.close()
conn.commit()
except Exception as e:
conn.rollback() # 出现错误回滚到前一个 commit 处
conn.commit()