Python实现数据库连接,并查询出excel中指定字段的信息

本文介绍如何利用Python读取Excel文件中的电话号码,通过数据库连接查询对应销售系统的客户详细信息,包括电话号码、住址、客户等级和成单时间。实现过程中涉及到了Excel数据处理、数据库连接和SQL查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户需求
通过EXCEL中的电话号码查询到电话号码在销售系统中所对应的 (电话号码,住址,客户等级,成单时间)
实现步骤
1.读取EXCEL文件中的电话号码,并将其转化为字符串(同数据库中的存储格式一致),之后将其用‘,’号 拼接(为sql语句查询做准备)。
2.使用sshtunnel、pymysql包,连接数据库。
3.使用pd.read_sql获取在数据库中的查询内容。
注意事项
1.sql语句缩进
2.执行完毕,要将数据库连接终止,不要占用端口。(终端程序的运行)
EXCEL中客户电话存储形式如图
在这里插入图片描述

import pymysql
import pandas as pd
from sshtunnel import SSHTunnelForwarder


# 连接数据库
def connect_eas():
    server = SSHTunnelForwarder(
        ('xxx.xxx.xxx.xx', 22),# 跳板机的地址和端口
        ssh_password='xxxx',# 跳板机登录密码
        ssh_username='xxxx',# 跳板机登录用户
        remote_bind_address=('xxx.xxx.x.xxx', 3306)# 远程的mysql服务器
    )

    server.start()
    # 调用pymysql包,取得数据连接
    con = pymysql.connect(
        host='127.0.0.1',
        port=server.local_bind_port,
        user='xxxxx',
        passwd='xxxxx',
        db='xxxxx'
    )
    return server, con

# 读取excel中的客户电话号码,并将号码拼接成字符串
def read_excel():
    data_phone= pd.read_excel('customer_phone.xlsx')
    phone=data_phone['客户电话'].astype('str')
    add_chars = ','
    phone_chars = add_chars.join(phone)
    return phone_chars

# *****补充内容 查询字符串 *********
# 获取需要查询的名字
def get_name():
    dfdata=pd.read_excel("name.xlsx")
    dfname=dfdata['姓名']
    str_name = dfname.astype('str')
    add_chars = ','
    name = add_chars.join(list(map(lambda x: "'%s'" % x, str_name)))
    return name

# 进行中数据库查询,并将查询结果作为excel输出
def get_mysql_result(phone_chars,con):
    # sql查询语句 (注:sql语句一定要缩进,否则出错)
    my_sql ="select \
           a.phone as '电话',\
           a.source as '地址',\
           a.rating as '客户等级',\
           a.time as '成单时间',\
           from guke as a\
           where  a.phone in ({})\
           ORDER BY a.time DESC".format(phone_chars)
    # 读取执行后的sql查询语句
    result = pd.read_sql(my_sql,con)
    return result


if __name__ == '__main__':
    # 读取excel数据
    data_phone = read_excel()
    # 获取数据库连接
    server,con = connect_eas()
    # 执行sql查询语句
    result_data=get_mysql_result(data_phone,con)
    # 将查询结果用xlsx格式输出
    result_data.to_excel("提取结果.xlsx")
    # 关闭和数据库的连接
    con.close()
    # 关闭服务器
    server.close()
    print("执行完毕")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值