python读取MySQL数据库 传入format格式化变量(%s)

——作为一个CSDN博主,如何更直接的获取成就感?——python2调用远程服务器定时爬取CSDN访问量存入MySQL数据库并可视化系列教程(三、数据读取) [toc]

前言

题外话—— 一定不要将自己的数据库信息直接裸放的网上! 一定不要将自己的数据库信息直接裸放的网上! 一定不要将自己的数据库信息直接裸放的网上! 我刚才把GitHub上的仓库删了,也不知道有多少人clone过。 目前好在我这个云数据库是自己的,也没有什么重要的信息。

这个也是爬虫可视化系列教程的一个部分,因为我觉得标题起的不好,可能访问量就很难上去,所以我得想办法起个大家都可能用的上的标题。 这部分其实是数据可视化模块,也就是项目的后半部分——读取数据库。 详细的代码,可以直接从我的GitHub上clone,然后觉得有价值的话,记得点star哦~ https://github.com/kaixindelele/CSDN_pageviews_spider_tomysql_and_visualize 其中visualizer文件夹里是读取数据库和可视化的部分。

读取数据库:

配置环境:

  • python2.7
  • 安装pymysql、matplotlib等包
  • 建立了自己的数据库信息,且数据库名称和我的一样,或者修改一下

表格形式:

python将数据写入json python将数据写入数据库_读取

column有num、blog_id等

上面的table_102是表格名字

代码分析

# -*- coding: utf-8 -*-
"""
Created on Tue Sep 04 20:36:33 2018
@author: lenovo
"""
import pymysql
#定义获取表信息的函数
def get_table_info(table_name,column,local):
    # 连接本地已有的数据库
    if(local == True):
        db = pymysql.connect("localhost", "root", "你的密码!", 'csdn' ,charset="utf8")
    # 或者是远程服务器
    elif(local == False):
        db = pymysql.connect("你的远程服务器IP地址!", "root", "你的密码!", 'csdn' ,charset="utf8")
    # 获取cursor光标
    cursor = db.cursor()

    # 构建读取表格的sql语句
    # select是选择指令,column是你需要拿的栏目,或者是表头,table_name是你选的表格名字
    sql_info = 'select %s from %s order by blog_id'%(column,table_name)

    # 执行sql语句
    try:
        cursor.execute(sql_info)
        # 提交到数据库执行
        db.commit()
        #data拿到数据库的信息,但是格式好像是字符串的列表,字符串编码是unicode
        data = cursor.fetchall()

        print 'this request is sucessful!'
    except Exception, e:
        # 如果发生错误则回滚
        db.rollback()
        print e
        print 'failed!'

    # 关闭数据库连接
    db.close()

    #下面是将这些字符串信息整合起来?具体是啥我忘了,反正是对data数据变成utf8格式的字符串列表
    #好像还要处理掉一个首尾的字符串多余的问题,这个到时候print 调试一下就好了
    tem = []
    try:
        for d in data:
            tem.append("".join(d).encode("utf-8"))
    except Exception , e:
        for d in data:
            tem.append(str(list(d))[1:-1])   
    return tem

#调试这个代码的时候,直接执行,会执行下面的语句
#读取table_1表格,中的创建时间(create_time),然后data获取信息,打印出来,非常适合调试
if __name__ == '__main__':
    table_name = 'table_1'
    column = 'create_time'
    data = get_table_info(table_name,column,local = False)
    for d in data:
        print d    
        print type(d)
    #列表和元祖转成字符串,必须要用join函数~
#    print ''.join(d)