【MySQL】pymysql 查询mysql数据库的两种方式

0.查看数据库、表、字段

查询sql:

table_name = 'test'
city = '北京'
sql_select = f'select * from {table_name} where city="{city}"'

要查询的数据库 test, 表 cplusplus,字段 city

在这里插入图片描述

接下来开始查询!!!

1.定义连接

# -*- conding: UTF-8 -*-
import pymysql
import pandas

conn = pymysql.Connection(
   host='localhost',
   port=3306,
   user='root',
   password='123456',
   charset='utf8',
   db='test',
)

2.使用fetchall获取数据

  1. execute 返回查询到的数据量
  2. fetchall 返回execute查询语句的数据,类型是元组不包括字段行
def get_data(table_name, city):
    cursor = conn.cursor()
    sql_select = f'select * from {table_name} where city="{city}"'
    data_count = cursor.execute(sql_select) # execute返回查询到的数据量,类型是int
    data = cursor.fetchall() # fetchall返回execute查询语句的数据,类型是元组,不包括字段行
    print(data_count)
    for d in data:
        print(d)
3
(1, 'C++工程师', 'https://www.lagou.com/jobs/4648073.html', 'C++工程师', '视频|MFC|QT|C++', '15k-30k', '全职', '深圳', '宝安区', '深圳市宝安区海秀路龙光世纪大厦A座6层', '本科及以上', '不限', '2020-04-04', '岗位职责:1、负责专业级产品后期处理PC/Mac软件的开发2、负责消费级产品后期处理PC/Mac软件的开发3、负责专业级产品PC/Mac控制软件的开发任职要求:1、计算机相关专业,本科或以上学历;2、熟练掌握C++开发,985/211校招或者两年之内工作经验C++工程师;3、聪明,踏实,具有较好的逻辑思维能力和学习能力,较强的团队合作精神;4、具有PC端GUI软件开发经验,熟悉Qt、Duilib等C++UI框架者优先5、熟悉MVC/MVVM/MVP等设计模式6、关键字:C++,Qt/Duilib,GUI客户端,MVC/MVVM/MVP设计模式', 'Insta360影石', '150-500人', '硬件,移动互联网', 'D轮及以上', '技术大牛|发展空间大|年底双薪|年终奖金')
(5, 'C++工程师', 'https://www.lagou.com/jobs/6519335.html', 'C++后台工程师', '信息安全|企业服务|后端|Linux/Unix', '20k-35k', '全职', '深圳', '南山区', '腾讯大厦', '本科及以上', '3-5年', '2020-04-04', '职位描述:负责电脑管家2B方向的后台产品开发;本科及以上学历,计算机相关专业;3年以上LinuxC/C++开发经验,熟悉多进程编程和进程间通讯;3年以上互联网业务开发经验优先,有分布式系统开发经验优先;精通常用网络协议TCP/IP协议,Http协议等,对安全、高性能有深入了解;熟悉至少一种linux下的脚本语言,如Python;熟悉常用的数据结构、算法,熟练使用STL等标准库;熟悉Unix/Linux操作系统原理,常用工具;熟悉Mysql/Oracle等数据库管理、开发、SQL调优;熟悉Unix/Linux下常用架构设计方法;具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力;责任心强,良好的对外沟通和团队协作能力,能抗压、主动好学;', '腾讯', '2000人以上', '社交', '上市公司', '全新2B方向后台开发|尽情展示激情')
(7, 'C++工程师', 'https://www.lagou.com/jobs/3205698.html', 'C++后台开发工程师', '支付|服务器端', '20k-40k', '全职', '深圳', '南山区', '腾讯大厦', '本科及以上', '3-5年', '2020-04-04', '岗位职责:1.负责后台Server的架构设计、开发、优化以及运营工作;2.负责责提出海量服务的解决方案,针对高并发高负载服务开发基础设施。岗位要求:1.本科以上学历,计算机相关专业;2.对后台开发有浓厚的激情,热爱编程,具有一定的后台Server架构设计、开发以及性能调优能力;2.3年以上Unix、Linux下C、C++开发经验,有一定的理解和开发经验;3.熟悉Unix、Linux操作系统原理及常用工具;4.精通TCP/IP等网络协议、进程间通讯编程,熟悉Unix/Linux下常用架构设计方法;5.熟悉Mysql等数据库,熟悉NoSQL存储;6.熟悉常用的数据结构与算法,具备良好的分析解决问题能力7.主动好学,责任心强,具有良好的对外沟通和团队协作能力,能独立承担任务,有系统进度把控能力;8.有大容量通信系统开发经验、异地容灾部署的相关经验者优先。9.有支付相关系统开发经验者优先', '腾讯', '2000人以上', '社交', '上市公司', 'C|LINUX|服务器')

3.使用pandas的read_sql获取数据

  • read_sql 返回的是DataFrame保留了字段名
def get_data_2(table_name, city):
    sql_select = f'select * from {table_name} where city="{city}" limit 3'
    df = pandas.read_sql(sql_select, conn)
    print(df)   # DataFrame可以视为二维数组
    print(df.info())                                # 取概述
    print('-'*40, '\n', df.columns)                 # 取表头
    print('-'*40, '\n', df.index)                   # 取索引
    print('-'*40, '\n', df['city'], '\n', df.city)  # 取单列:按标签名选择某一列
    print('-'*40, '\n', df[['city', 'position']])   # 取多列:按标签名选择某两列
    print('-'*40, '\n', df.iloc[1:3, [4,6]])        # 取多列多行:[1,3)46print('-'*40, '\n', df.iloc[1:3, 3:6])          # 取多列多行:[1,3)[3,6)print('-'*40, '\n', df.loc[0:2, ['city', 'position']])          # 取多列多行:[0,3)['city', 'position']]
   id keywords  ... company_type      company_benefits
0   1   C++工程师  ...        D轮及以上  技术大牛|发展空间大|年底双薪|年终奖金
1   5   C++工程师  ...         上市公司     全新2B方向后台开发|尽情展示激情
2   7   C++工程师  ...         上市公司           C|LINUX|服务器

[3 rows x 19 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 19 columns):
id                  3 non-null int64
keywords            3 non-null object
detail_url          3 non-null object
position            3 non-null object
tags                3 non-null object
salary              3 non-null object
job_type            3 non-null object
city                3 non-null object
district            3 non-null object
street              3 non-null object
education           3 non-null object
work_experience     3 non-null object
release_date        3 non-null object
description         3 non-null object
company_name        3 non-null object
company_scale       3 non-null object
company_field       3 non-null object
company_type        3 non-null object
company_benefits    3 non-null object
dtypes: int64(1), object(18)
memory usage: 584.0+ bytes
---------------------------------------- 
 Index(['id', 'keywords', 'detail_url', 'position', 'tags', 'salary',
       'job_type', 'city', 'district', 'street', 'education',
       'work_experience', 'release_date', 'description', 'company_name',
       'company_scale', 'company_field', 'company_type', 'company_benefits'],
      dtype='object')
---------------------------------------- 
 RangeIndex(start=0, stop=3, step=1)
---------------------------------------- 
 0    深圳
1    深圳
2    深圳
Name: city, dtype: object 
 0    深圳
1    深圳
2    深圳
Name: city, dtype: object
---------------------------------------- 
   city    position
0   深圳      C++工程师
1   深圳    C++后台工程师
2   深圳  C++后台开发工程师
---------------------------------------- 
                       tags job_type
1  信息安全|企业服务|后端|Linux/Unix       全职
2                  支付|服务器端       全职
---------------------------------------- 
      position                     tags   salary
1    C++后台工程师  信息安全|企业服务|后端|Linux/Unix  20k-35k
2  C++后台开发工程师                  支付|服务器端  20k-40k
---------------------------------------- 
   city    position
0   深圳      C++工程师
1   深圳    C++后台工程师
2   深圳  C++后台开发工程师

更多DataFrame使用方法,看我的思维导图:
在这里插入图片描述
或者访问:https://www.pypandas.cn/docs/getting_started/

4.主函数调用

if __name__ == '__main__':
    get_data(table_name='cplusplus', city='深圳')
    get_data_2(table_name='cplusplus', city='深圳')

参考博文:https://www.jianshu.com/p/914f6756785a

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值