码迷,mamicode.com
首页 > 数据库 > 详细

python操作mysql

时间:2019-09-27 01:30:19      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:back   sel   llb   端口   自己   ase   name   password   案例   

python操作mysql

安装

python操作mysql数据库,主要就是通过pymysql模块

pip install pymysql

操作流程

1)建立数据库连接对象 conn

2)通过 conn 创建操作sql的 游标对象

3)编写sql交给 cursor 执行

4)如果是查询,通过 cursor对象 获取结果

5)操作完毕,端口操作与连接

代码步骤

注意

1.对记录增删改默认需要commit()

准备

import pymysql

一.建立连接

conn = pymysql.connect(user='root', passwd='root', database='t5')

二.获取游标对象

# 注:游标不设置参数,查询的结果就是数据元组,数据没有标识性
# 设置pymysql.cursors.DictCursor,查询的结果是字典,key是表的字段cursor = conn.cursor(pymysql.cursors.DictCursor)

三.增删改查

创建表

sql1="create table zx(id int)"
cursor.execute(sql1)

#单条添加
sql2='insert into zx values(%s)'
cursor.execute(sql2,(1,))
cursor.execute(sql2,(2,))
cursor.execute(sql2,(3,))
conn.commit()
#多条添加
cursor.executemany(sql2, [(4,), (5,)])
conn.commit()

sql3="delete from zx where id =%s"
cursor.execute(sql3,3)
conn.commit()

sql4='update zx set id=10 where id =2'
cursor.execute(sql4)
conn.commit()

sql5='select * from zx'
cursor.execute(sql5)

#fetchone() 偏移一条取出
r1=cursor.fetchone()
print(r1)

#fetchmany(n) 偏移n条取出
r2=cursor.fetchmany(1)
print(r2)

#fetchall() 偏移剩余全部
r3=cursor.fetchall()
print(r3)

结果

{'id': 1}
[{'id': 10}]
[{'id': 4}, {'id': 5}]

结束

#释放端口与连接
cursor.close()
conn.close()

游标其他用法

 # 操作游标
    # cursor.scroll(0, 'absolute')  # absolute绝对偏移,游标重置,从头开始偏移
    cursor.scroll(-2, 'relative')  # relative相对偏移,游标在当前位置进行左右偏移

事务

#转账案例
try:
    sql1 = 'update t2 set money=money-1 where name="tom"'
    r1 = cursor.execute(sql1)
    sql2 = 'update t2 set money=money+1 where name="ruakei"'  # 转入的人不存在
    r2 = cursor.execute(sql2)
except:
    print('转账执行异常')
    conn.rollback()
else:
    print('转账没有异常')
    if r1 == 1 and r2 == 1:
        print('转账成功')
        conn.commit()
    else:
        conn.rollback()

sql注入攻击

不要自己拼接参数,交给pymysql占位填充!

sql = 'select * from user where name=%s and password=%s'
row = cursor.execute(sql, (usr, pwd))
if row:
    print('登录成功')
else:
    print('登录失败')

python操作mysql

标签:back   sel   llb   端口   自己   ase   name   password   案例   

原文地址:https://www.cnblogs.com/zx125/p/11595346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!