Python连接MySQL——pymysql模块

1、介绍

import pymysql #载入

#创建数据库连接
con = pymysql.connect(host='localhost',port=3306,user='root',password='密码',db='数据库名',charset='utf8')
      # host:数据库主机地址,本机就是localhost
      # port:端口号
      # user:数据库的用户名
      # password:数据库密码
      # db:要访问的数据库名
      # charset:‘utf-8’编码

# 使用cursor()创建一个游标对象
cursor=con.cursor()

#使用execute()执行SQL语句
cursor.execute('select * from tabel')

#接受全部分返回结果
res=cursor.fetchall()
print(res)

# 关闭连接
con.close()

#结果是元组形式,不是可以直接使用的列联表的格式,需要转换。
#
可以封装函数进行执行和转换的操作,之后直接调用

 

 

2、封装函数

import pymysql
import pandas as pd

#方法主要包含两部分,输入的参数和要执行的SQL语句
#两个参数分别如下:
#DB:连接数据库的参数
#SQL:要执行的SQL语句
def get_mysqldata(DB,SQL):
    conn = pymysql.connect(host=DB['host'],port=DB['port'],user=DB['user'],password=DB['password'],db=DB['db'],charset='utf8')
    # 创建一个游标
    cursor=conn.cursor()

    #执行SQL语句
    cursor.execute(SQL) #执行上面参数SQL传过来的语句

    #接受全部分返回结果
    data=cursor.fetchall()
    
    # cols字段信息
    cols = cursor.description #会输出元组形式的数据
   
    # 执行
    conn.commit()

    # 关闭连接
    conn.close()
    
    #转变数据类型,因为上面读出来的是元祖类型,要转化成列表才能使用
    col=[]
    for i in  cols:
        col.append(i[0])
    data = list(map(list,data)) #转换成list形式:map(list,data)将data中的每个数据(每一行)一一转化成list,在被最外面的list转化成一个大的列表
    data = pd.DataFrame(data,columns = col)
    
    return data

DB = {'host':'localhost',
        'port':'3306',
        'user':'root',
        'password':'密码',
        'db':'数据库名'}
SQL = "select * from tabel"

result = get_mysqldata(DB,SQL)
display(result)

# 如果数据量多,可以使用迭代器分批次取数据

 

posted @ 2021-08-12 17:11  午时  阅读(451)  评论(0编辑  收藏  举报