博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python操作数据库
阅读量:6734 次
发布时间:2019-06-25

本文共 3626 字,大约阅读时间需要 12 分钟。

 1、操作Mysql:

1、Python3安装pymysql第三方模块

   Python2中是MySQLdb模块。

   Python3总没有MySQLdb模块了,所以使用pymysql

2、操作Mysql数据库

  (1) 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集

  (2) 创建游标

  (3) 执行sql

  (4) 获取结果

  (5) 关闭游标

  (6) 连接关闭

import pymysql# 1、连上数据库  账号、密码 ip 端口号 数据库#2、建立游标#3、执行sql#4 、获取结果# 5、关闭游标#6、连接关闭data=[]coon = pymysql.connect(    host='IP',user='root',passwd='123456',    port=3306,db='jxz',charset='utf8'    #port必须写int类型,    #charset这里必须写utf8)cur = coon.cursor() #建立游标cur.execute('select * from stu;')#执行sql语句#cur.execute('insert into stu (id,name,sex) VALUE (1,"小红","女");')col_name_list = [tuple[0] for tuple in cur.description]#cur.execute("PRAGMA table_info(stu)")data.append(col_name_list)for data1 in cur.fetchall():    data.append(data1)#coon.commit()  #必须得coomit#res = cur.fetchall()  #获取所有返回的结果#print(len(res))#data.append(res)print(data)print(type(data[0]))print(type(data[1]))#print(res)cur.close()#关闭游标coon.close()#关闭连接

封装成函数:

def my_db(host,user,passwd,db,sql,port=3306,charset='utf8'):    import pymysql    coon = pymysql.connect(user=user,                           host=host,                           port=port,                           passwd=passwd,                           db=db,                           charset=charset                           )    cur = coon.cursor() #建立游标    cur.execute(sql)#执行sql    if sql.strip()[:6].upper()=='SELECT':        res =  cur.fetchall()    else:        coon.commit()        res = 'ok'    cur.close()    coon.close()    return res

 (1)

cur = coon.cursor(cursor=pymysql.cursors.DictCursor)

建立游标的时候指定了游标类型,返回的就是一个字典了。

(2)

fetchall() #获取到这个sql执行的全部结果,它把数据库表里面的每一行数据放到一个list里面
[ ['1','2','3'] ] [{},{},{}]
fetchone() #获取到这个sql执行的一条结果,它返回就只是一条数据

如果sql语句执行的结果是多条数据的时候,那就用fetchall()

如果你能确定sql执行的结果就只有一条,那么就用fetchone()

import pymysqldef my_db(sql,port=3306,charset='utf8'):    import pymysql    host, user, passwd, db = 'ip','root','123456','jxz'    coon = pymysql.connect(user=user,host=host,port=port,passwd=passwd,db=db,charset=charset)    cur = coon.cursor(cursor=pymysql.cursors.DictCursor) #建立游标,指定cursor类型返回的是字典    cur.execute(sql)#执行sql    if sql.strip()[:6].upper()=='SELECT':        fileds = [ filed[0] for filed in cur.description ]  #和上面3行代码的意思是一样        print(fileds)  #['id', 'username', 'passwd']        #res=cur.fetchall()#获取所有的数据#        #res=cur.fetchone()#获取一条数据        #res=cur.fetchmany(2)  #能传入一个数,返回多少条数据        #res= 'xx'    else:        coon.commit()        res = 'ok'    cur.close()    coon.close()    return resres = my_db('select * from users_info limit 10;')print(res)

 (3)

需求:只要你传入一个表名,就能把所有的数据导入出来,字段名是excel的表头

1、要动态获取到表的字段 cur.description能获取到表的字段
fileds = [ filed[0] for filed in cur.description ]
2、获取数据了 select * from "%s" % table_name
3、循环写入excel

enumerate([list,list2]) #循环的时候,直接获取到下标,和值

for index,value in enumerate([list,list2]):
print(index,vlaue)

 通用写入Excel:

import  pymysql,xlwtdef export_excel(table_name):    host, user, passwd, db = 'ip', 'root', '123456', 'jxz'    coon = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=3306, charset='utf8')    cur = coon.cursor()    sql='select * from %s ;'%table_name    cur.execute(sql)    fileds = [filed[0] for filed in cur.description]    all_data=cur.fetchall()    book=xlwt.Workbook()    sheet=book.add_sheet('stu')    for index, filed in enumerate(fileds):        sheet.write(0,index,filed)    row=1#行数    for data in all_data:#行        for col,filed in enumerate(data):#控制列            sheet.write(row,col,filed)        row+=1#每次写完一行,行数加1    book.save('%s.xls'%table_name)    cur.close()    coon.close()export_excel('app_student')

 

转载于:https://www.cnblogs.com/hwtfamily/p/8982836.html

你可能感兴趣的文章
MAC OS环境下搭建基于Python语言的appium自动化测试环境
查看>>
开发提测标准
查看>>
基于HTML5多图片Ajax上传可预览
查看>>
Oracle之分页查询
查看>>
C#基础教学,献给初入C#的自己和同道中人
查看>>
Sublime text插件使用技巧
查看>>
xampp下设置不显示php错误提示 关闭错误提示 屏蔽错误提示
查看>>
网站安全检测
查看>>
【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件...
查看>>
:class/:disabled
查看>>
“帮汪峰上头条”背后的注意力经济
查看>>
iphone开发中sqlite3说明
查看>>
matlab转c++代码实现(主要包含C++ std::vector,std::pair学习,包含数组与常数相乘,数组相加减,将数组拉成一维向量,图片的读入等内容)...
查看>>
什么是软件测试?
查看>>
怎样提高WebService的性能
查看>>
千万级APP花落谁家?获奖即赠百万推广资源
查看>>
Jmeter性能测试 入门 (Z)
查看>>
CodeForcs 1169B Good Triple
查看>>
odoo明细表汇总数据
查看>>
无缝滚动 js 一
查看>>