包的导入:
@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(),要搭配查询函数使用,其本身并不能显示数据