python pandas dataframe to_sql创建
2017-11-14 本文已影响0人
Py_Explorer
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')
有问题,记得留言哦!