邮箱图标 wotula.com

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])) 

 

posted @ 2016-10-25 11:06  编程浪子Yiutto  阅读(6054)  评论(0编辑  收藏  举报