pymysql自学笔记

一、MySQL的驱动库

MySQLdb
最有名的库。支持Python 2,但不支持Python3
pymysql
语法兼容MySQLdb,使用Python写的库,支持Python 3

二、导入库

import pymysql

三、一般流程

-1. 建立连接 2.获取游标 3. 执行SQL 4.提交事务 5.释放资源

(一)建立连接

pymsql.connect()方法
返回的是Connections模块下的Connection实例
其Connection初始化常用参数及说明
host 主机:常为localhost或ip地址
user 用户名
password 密码
database 数据库
port 端口:常为3306
为了判断是否正确连接数据库,使用Connection.ping()方法。

    conn = pymysql.connect(ip,user,password,database,port)
    conn.ping(False)

(二)获取游标

cursor = conn.cursor()

(三)执行SQL

例:

sql = "insert into table (name,age) values ('tom{}',18)".format(i)
cursor.execute(sql)

(四)提交事务

conn.commit()#将变更提交
conn.rollback()#回滚事务

(五)释放资源

conn.close()#关闭连接
cursor.close()#释放游标

为了出现异常后能提示用户,使用try: except:finally:对异常情况进行处理.

import pymysql

cursor = None
conn = None
try:
   conn = pymysql.connect(ip,user,password,database,port)
   cursor = conn.cursor()
   sql = "select * from table"
   cursor.execute(sql)
   conn.commit()
except:
   conn.rollback()
finally:
   if conn:
       conn.close()
   if cursor:
       cursor.close()

四、执行sql语句

使用execute(sql,args)方法注意事项:

  • execute方法中sql语句占位符是%s,%s必须用括号()
  • args一般是list或tuple格式,如果只有一个参数,可直接传入

1.插入数据,修改数据,删除数据时,即不需要返回数据时

conn = pymysql.connect(ip,user,password,database,port)
cursor = conn.cursor()
sql = "sql语句(insert/alter/drop"
cursor.execute(sql,args)
conn.commit()
cursor.close()
conn.close()      

2.查询数据,需要返回数据时

conn = pymysql.connect(ip,user,password,database,port)
cursor = conn.cursor()
sql = "sql语句"
cursor.execute(sql,args)
result = cursor.fetchone()#将数据读出
conn.commit()
cursor.close()
conn.close() 

读取数据的方法:

  • fetchone()

获取结果集的下一行

  • fetchmany(size=None)

size指定返回的行数,None则返回空元组

  • fetchall()

返回剩下的所有行,如果走到末尾,就返回空元组,否则返回一个元组,其元素是每一行的记录封装的一个元组

  • cursor.rownumber

返回当前行号.可以修改,支持负数

  • cursor.rowcount

返回的总行数

防范SQL注入攻击的方法

参数化查询,可以有效防止注入攻击,并提高查询的效率

Cursor.execute(query,args=None)
args必须是元组 列表或字典,如果查询字符串使用%(name)s,就必须使用字典.

sql = "select * from table where name like %(name)s and age < %(age)s"
cursor.execute(sql,{'name':'tom%','age':25})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值