不管是做数据分析还是风控建模,都避免不了从数据库中取数,和把数据写入数据库。
本文整理连接数据库的不同方法,以及单条写入数据和批量写入数据。
所有代码都实测可用,并实际应用于生产,分享给更多在这方面遇到困难的朋友。
取数后的分析结果若想定时发送给相关人员,可参考【干货】用Python每天定时发送监控邮件。
连接数据库方法一(pymysql)
连接数据库方法二(create_engine)
把数据导入到数据库
一行一行追加写入少量数据
批量追加写入数据

首先介绍连接数据库的方法一,具体代码如下:
import pymysqlimport numpy as npimport pandas as pd#36数据库conn = pymysql.connect(host='ip', user='用户名', passwd='密码', db='数据库名')#建立连接,host中填mysql服务器所在的主机的ip,user中填为用户名,passwd中填密码,db中填数据库名sql = ''' select * from credit_approve_result limit 3'''date = pd.read_sql_query(sql, conn)

接着介绍连接数据库的方法二,具体代码如下:
import pandas as pdfrom sqlalchemy import create_engineconn = create_engine('mysql+pymysql://user:passwd@ip:3306/db',encoding='utf8')#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ip,db中填数据库名sql = ''' select * from credit_approve_result limit 3'''date = pd.read_sql_query(sql, conn)主要思路是先导入库,再填入用户名、密码、数据库名等信息建立连接,其中3306是默认端口。 然后定义sql查询语句,进行数据查询。 可以发现这两种连接方式很像,只是用到的库不一样,填信息的形式不一样,大体步骤是一样的。
三、把数据导入到数据库 刚刚我们已经从数据库中读取数据了,我们试下把sql取数的结果导入到新表中。
具体代码如下:
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ipdate.to_sql("jlkj_cs", conn, if_exists='replace', index=False)以上代码是把date数据导入到test库的jlkj_cs表中,如果之前存在这张表,用date的数据替换这张表。
四、一行一行追加写入少量数据
为了让大家更清晰地看到取数,写入数据,追加写入数据的逻辑。
这一节把前面几小节的内容进行了汇总,并增加了一行一行追加写入少量数据的代码。
具体如下:
import pandas as pdimport pymysql.cursorsfrom sqlalchemy import create_engine#读取数据conn = create_engine('mysql+pymysql://user:passwd@ip:3306/temp_data_2',encoding='utf8')jxb_sx_head3 = pd.read_sql('''select session_id, customerName from xb_policy_sxall limit 3''',conn)#写入数据conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')jxb_sx_head3.to_sql("jlkj_cs", conn, if_exists='replace', index=False)#单条插入数据conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")cursor = conn.cursor()cursor.executemany("insert into jlkj_cs values(%s, %s)",[('OT111', '张一'),('OT112', '张二')])conn.commit()#检查是否插入成功conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")cs_add_date = pd.read_sql('''select * from jlkj_cs''',conn)cs_add_date得到结果:
五、批量追加写入数据
在第四小节中已经介绍了一条一条写入数据的方法,本小节介绍把数据框直接追加写入到数据库表中的方法。
具体代码如下:
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')date_pl.to_sql(name='jlkj_cs', con=conn, if_exists='append', index=False, index_label=False)cs_add_date2 = pd.read_sql('''select * from jlkj_cs''',conn)cs_add_date2得到结果:
其中date_pl中的数据需要和写入表的数据一致。
至此,Python连接数据库取数与写入数据已讲解完毕,需要的朋友可以自己跟着代码尝试一遍
。
【限时免费进群】群内提供学习Python、玩转Python、风控建模、人工智能、数据分析相关招聘内推信息、优秀文章、学习视频,也可交流学习工作中遇到的相关问题。需要的朋友添加微信号19967879837,加时备注想进的群,比如风控建模。
一文囊括风控模型搭建(原理+Python实现),持续更新。。。


扫一扫关注我
19967879837
添加微信号、手机号





