zoukankan      html  css  js  c++  java
  • Python之数据库导入(py3.5)

    数据库版本:MySQL

    Python版本:3.5

    之前用想用MySQLdb来着,后来发现py3.5版本不支持,现选择pymysql

    现在想将数据库adidas中的表jd_comment读取至python中的DataFrame,方便数据分析处理

    大众代码如下:

    import pymysql
    import pandas as pd
    import numpy as np
    
    try:
        conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8')
        cur = conn.cursor()
        cur.execute('select * from jd_comment')
        rows = cur.fetchall() #获取元组列表
        cur.close()
        conn.close()
    except pymysql.Error as e:
        print('Mysql Error %d: %s' %(e.args[0], e.args[1])) 
        
    cols = list(zip(*cur.description)) #可以看到列名(由元组构成)
    
    #将数据库中的数据保存为DataFrame(数据必须是字典或者数组,列表也必须是list或者数组)
    adidas = pd.DataFrame(np.array(rows), columns=list(cols[0]))

    charset必须和之前数据库保存一致,否则中文会出现乱码

    简单说2句:host指的是主机名

                        user用户名

           passwd密码

           db 数据库名

                        rows获取的是数据库中Tables的数据行,但是保存的是元组tuple,如若要构造成DataFrame,需转化为数组或者字典

            cols列表中第一个元组保存的是数据库中Tables的列名,如若要构造成DataFrame,需要转化为list或数组

                 详细可参考Dataframe的用法

    看了上述代码感觉每次导入一个数据库好繁琐,下面给出一个精简版。代码中的try---except如不需要,也可自行删除

    import pandas.io.sql as sql
    import pymysql
    
    
    try:
        conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8')
        adidas = sql.read_sql('select * from jd_comment', conn)#将数据库读入dataframe
        conn.close()
    except pymysql.Error as e:
        print('Mysql Error %d: %s' %(e.args[0], e.args[1])) 
  • 相关阅读:
    (转)S5PV210之UBOOT2011.06启动过程解析
    (转)S5PV2101210启动方式和代码前16字节
    (转)UBoot启动过程详细版的完全分析
    uboot中.lds连接脚本文件的分析
    makefile中的@
    (转)GNU ARM汇编(十七)uboot的makefile和mkconfig解读
    (转)关于uboot中的.balignl 16,0xdeadbeef的理解
    (转)ARM协处理学习
    linux下拷贝的时候有时候会出现cp:omitting directory的错误
    Quartz JobListener 任务监听器
  • 原文地址:https://www.cnblogs.com/Yiutto/p/5995927.html
Copyright © 2011-2022 走看看