美文网首页我爱编程
python pandas dataframe to_sql创建

python pandas dataframe to_sql创建

作者: Py_Explorer | 来源:发表于2017-11-14 21:50 被阅读0次

    1.安装pandas , sqlalchemy ,pymysql

     #将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为utf8,否则有些latin字符不能处理
     #coding=utf-8
     import pandas as pd
     import pymysql                                                                    #数据库模块
     pymysql.install_as_MySQLdb()                                           #引入mysqldb不然会出错
     from sqlalchemy import create_engine  #引入sqlalchemy   #引擎
     #创建连接
     yconnect = create_engine('mysql+mysqldb://root:password@localhost:3306/database?charset=utf8')
     #创建数据库
     pd.io.sql.to_sql(thedataframe,'pandasda', con=yconnect, schema='db_py', if_exists='append')
    

    参数说明

    mysql为要连接的数据库为mysql关系型数据库
    root:为mysql连接账户名
    password:为mysql连接的密码,比如root

    yconnect = create_engine('mysql+mysqldb://root:root@localhost:3306/db_py?charset=utf8')

    • localhost为本机的数据库
    • 3306为MySQL数据库的端口号
    • database为数据库名称,比如

    yconnect = create_engine('mysql+mysqldb://root:root@localhost:3306/db_py?charset=utf8')

    【重点】thedataframe有两种类型,一种为序列,另一种为dataframe格式

    例:

    序列格式

    import pandas as pd
    df=pd.Series(['1','2','3'],index=["q","w","e"])
    #将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为utf8,否则有些latin字符不能处理
    yconnect = create_engine('mysql+mysqldb://root:root@localhost:3306/db_py?charset=utf8')
    pd.io.sql.to_sql(df,'pandasda', con=yconnect, schema='db_py', if_exists='append')
    

    dataframe形式

    这里用我写过的爬取拉钩为例

    #coding=utf-8
    import pandas as pd
    import pymysql
    pymysql.install_as_MySQLdb()
    from sqlalchemy import create_engine
    # 引入需要的模块
    import json  # 使用json解码 因为拉勾网的格式是json
    import requests  # 使用这个requests是得到网页源码
    import pandas  # 使用这个数据进行存储
    import openpyxl
    
    items = []  # 定义空列表用来存放你得到的数据
    #  循环两页 这里爬取的是两页内容
    for i in range(1, 2):
        # 传入data 因为这个url是post的请求方法 pn指的是页数 kd指的是你搜索的内容
        # 反爬虫必要的参数要加
        data = {'first': 'true', 'pn': i, 'kd': 'python'}
        headers = {
        "Referer": "https://www.lagou.com/jobs/list_python?px=default&city=全国",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)"
        }
        # 拉钩网的链接是固定的就变化的是页数 因为是post的提交方法 所以传入data
        yuan = requests.post(
            'https://www.lagou.com/jobs/positionAjax.json?               px=default&needAddtionalResult=false&isSchoolJob=0',
        data=data, headers=headers).content
        # 使用json进行解码 因为返回的是一个json的格式
    yuan = json.loads(yuan)
    # 得到14个数据
    for i in range(14):
        item = []
        # 看下面的图片item里面的是什么数据
        item.append(yuan['content']['positionResult']['result'][i]['positionName'])
        item.append(yuan['content']['positionResult']['result'][i]['companyFullName'])
        item.append(yuan['content']['positionResult']['result'][i]['salary'])
        item.append(yuan['content']['positionResult']['result'][i]['city'])
        item.append(yuan['content']['positionResult']['result'][i]['positionAdvantage'])
        items.append(item)
        #  使用的是pands的存数据 存为xlsx就是excel格式
    data = pandas.DataFrame(items)
    #将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为    utf8,否则有些latin字符不能处理
    yconnect = create_engine('mysql+mysqldb://root:root@localhost:3306/db_py?charset=utf8')
    pd.io.sql.to_sql(data,'pandasda', con=yconnect, schema='db_py', if_exists='append')
    

    有问题,记得留言哦!

    相关文章

      网友评论

        本文标题:python pandas dataframe to_sql创建

        本文链接:https://www.haomeiwen.com/subject/zshqvxtx.html