Python Pymysql模块
1、要使用Pymysql需要先安装pymysql模块。
有三种安装方式:1)在线安装pip install pymysql 2)pycharm安装,file-》setting-》project XX(项目名)-》project interpreter -》选择Python版本,点+图标--》搜pymysql,然后点击install package按钮进行安装 3)下载pymysql安装包,Python setup.py install 安装
2、pymysql的一般步骤:
1)建立连接连接数据库 2)建立游标 3)执行sql 4)获取结果 5)关闭游标 6)关闭连接
3、建立连接
import pymysql
conn=pymysql.connect(host='192.168.58.136',port=3306,user='root',password='123456',db='test',charset='utf8')#port 数据必须是int类型,charset只能写utf8,不能写成utf-8,否则会报错
4、建立游标
cur=conn.cursor()
5、执行sql
res=cur.execute("select XXXX")
6、获取结果
获取结果有三种:
res=cur.fetchone() 只获取一条
res=cur.fetchall() 获取所有
res=cur.fetchmang(X) 自定义取X条
一般只有执行查询sql才会用到获取结果
结果的类型:如果建立的游标没有特别指明游标的类型,那获取结果返回的res结果是:res=cur.fetchone() 返回的结果是一元组,如果查询没有结果返回是None ,eg:('d_book',) ,res=cur.fetchall() 和res=cur.fetchmang(X) 返回的结果是二元组,如果查询没有结果,返回的是():(('d_book',), ('d_category',))
如果建立的游标特地指明了游标的类型是字典:cur=conn.cursor(pymysql.cursors.DictCursor),那获取返回的res结果:res=cur.fetchone() 返回的结果是字典 如果查询没有结果返回是None,res=cur.fetchall() 和res=cur.fetchmang(X) 返回的结果是list,list里面是字典,如果查询没有结果,返回的是[]
7、如果执行的sql语句是delete、insert和update,那么需要执行sql后,增加一个提交的操作:conn.commint()
8、关闭游标
cur.close()
9、断开连接
conn.close()
10、移动游标
移动游标有两种模式:
1)绝对模式 cur.scoll(0,mode='absolute')#移动到最前面 开始行对应0
2)相对模式 cur.scroll(-1,mode='relative')#移动游标,模式:相对 相对于当前位置来移动,-1是往前,正数往后移动,eg:当文件已经全部取完了, cur.scroll(-1,mode='relative')模式相当于取最后一条
mysql例子:
import pymysql,redis
#通用数据库操作
def op_mysql(host,user,password,db,sql,port=3306,charset='utf8'):
conn = pymysql.connect(host=host,user=user,
password=password,
port=port,
charset=charset,db=db)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
sql_start = sql[:6].upper() #取sql前6个字符串,判断它是什么类型的sql语句
if sql_start=='SELECT' :
res = cur.fetchall()
else:
conn.commit()
res = 'ok'
cur.close()
conn.close()
return res
print(__name__)#__name__是一个常量
if __name__ == '__main__':#别人导入这个Python文件的时候,下面的代码不会被执行,用于测试。
print(__name__)
sql1='select * from bt_stu where id="320900";'
res=op_mysql(host='211.149.218.16',port=3306,user='jxz',password='123456',db='jxz',charset='utf8',sql=sql1)
print(res)