一, 安装
- sudo apt-get install pymysql
- sudo pip3 install pymysql
Connection 对象
用于建立与数据库的连接
创建对象: 调用 connect() 方法
conn=connect(参数列表)
参数 host: 连接的 MySQL 主机, 如果本机是'localhost'
参数 port: 连接的 MySQL 主机的端口, 默认是 3306
参数 db: 数据库的名称
参数 user: 连接的用户名
参数 password: 连接的密码
参数 charset: 通信采用的编码方式, 默认是'gb2312', 要求与数据库创建时指定的编码一致, 否则中文会乱码
对象的方法
close() 关闭连接
commit() 事务, 所以需要提交才会生效
rollback() 事务, 放弃之前的操作
cursor() 返回 Cursor 对象, 用于执行 sql 语句并获得结果
Cursor 对象
执行 sql 语句
创建对象: 调用 Connection 对象的 cursor() 方法
cursor1=conn.cursor()
对象的方法
close() 关闭
execute(operation [, parameters ]) 执行语句, 返回受影响的行数
fetchone() 执行查询语句时, 获取查询结果集的第一个行数据, 返回一个元组
next() 执行查询语句时, 获取当前行的下一行
fetchall() 执行查询时, 获取结果集的所有行, 一行构成一个元组, 再将这些元组装入一个元组返回
scroll(value[,mode]) 将行指针移动到某个位置
mode 表示移动的方式
mode 的默认值为 relative, 表示基于当前行移动到 value,value 为正则向下移动, value 为负则向上移动
mode 的值为 absolute, 表示基于第一条数据的位置, 第一条数据的位置为 0
对象的属性
rowcount 只读属性, 表示最近一次 execute() 执行后受影响的行数
connection 获得当前连接对象
二, python 与 MySQL 连接代码
- from pymysql import *
- try:
- conn=Connection(host="localhost",port=3306,user="root",passwd="mysql",db='python3',charset="utf8")
- cursor1=conn.cursor()
- sql="insert into students(name) values('郭小二')"
- #sql="update students set name='王小二'where id = 9"
- #sql="delete from students shere id=9"
- cursor1.execute(sql)
- conn.commit()
- cursor1.close()
- conn.close()
- except Exception :
- print("错误")
查询:
- import MySQLdb
- try:
- conn=MySQLdb.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')
- cur=conn.cursor()
- cur.execute('select * from students')
- result=cur.fetchall()
- print result
- cur.close()
- conn.close()
- except Exception,e:
- print e.message
三, sql 语句参数化
防止 sql 注入
- from pymysql import *
- try:
- conn=Connection(host="localhost",port=3306,user="root",passwd="mysql",db='python3',charset="utf8")
- cursor1=conn.cursor()
- sname=raw_input("请输入学生姓名:")
- params=[sname]
- cursor1.execute("insert into students(sname) values(%s)",params)
- conn.commit()
- cursor1.close()
- conn.close()
- except Exception :
- print("错误")
来源: http://www.bubuko.com/infodetail-3004018.html