包的导入:
@python3 import pymysql
@python2 import MySQLdb
基本应用
import pymysql
#建立连接
db = pymysql.connect(host=‘localhost’, port=3306, db=‘test’, user=‘root’, password=‘root’)
#使用cursor()方法 新建游标对象
cursor = db.cursor()
#使用execute()方法执行SQL语句
cursor.execute(“SELECT * FROM teacher”)
#使用fetchall()获取全部数据
data = cursor.fetchall()
#打印获取的的数据
print(data)
#关闭游标和数据库的连接
cursor.close()
详解
pymysql.connect中可接受的参数:
host:主机名或地址
user:用户名
password:密码 简写passwd
database:指定数据库 简写db
port:端口,默认3306
charset:指定字符编码
**kw:关键字参数,用于字典.(*args是非关键字参数,用于元组,必须要在**kwargs前)
cursor其实是调用了cursors模块下的Cursor的类,这个模块主要的作用就是用来和数据库交互的
数据库操作commit()方法:
在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。
execute():提供插入的数据
executemany():用来同时插入多条数据
execute()和executemany()都会返回受影响的行数:
res = cursor.executemany(sql,('jack',))
print(res) #返回受到影响行数
当表中有自增的主键的时候,可以使用print(cursor.lastrowid)来获取最后一次自增的ID
数据插入
# 数据库连接配置信息
config = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "root",
"database": "test"
}
db = pymysql.connect(**config) # 连接数据库
cursor = db.cursor() # 使用cursor()方法 新建游标对象
sql = "INSERT INTO teacher(name, sex, addr) VALUES(%s, %s, %s)" # 待执行的sql语句
# cursor.execute(sql) # 使用execute()方法执行SQL语句
data = [('wanglei', 'male', 'beijing'), ('mulasha', 'female', 'hangzhou')]
cursor.executemany(sql, data) # cursor.excutemany()同时插入多条数据
db.commit() # 提交数据
cursor.close()
db.close()
数据库的查询:
fetchone():获取下一行数据,第一次为首行,第二次为第二行,.....
fetchall():获取所有行数据源,只获取一次。tpye(cursor.fetchall) == tuple
用fetchall获取所有行的数据,都被放在一个元组里面,
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
#在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor,
每一行都被生成一个字典放在列表里面,便于理解
fetchmany(4):获取下4行数据
scroll():
cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
相当于seek(),要搭配查询函数使用,其本身并不能显示数据