美文网首页
数据获取_数据库的读取与存储

数据获取_数据库的读取与存储

作者: 南有妖尾 | 来源:发表于2020-04-08 17:01 被阅读0次

    一、读取MySQL数据库

    MySQL数据库是开源的关系型数据库,可以通过python与其进行连接。首先需要安装第三方库pymysql → pip install pymysql并且电脑上已经安装好该数据库

    # 设置cell多行输出
    
    from IPython.core.interactiveshell import InteractiveShell 
    InteractiveShell.ast_node_interactivity = 'all' #默认为'last'
    
    # 导入相关库
    import numpy as np
    import pandas as pd
    import os
    import pymysql  # 导入pymysql库
    

    (1)方法1 → 利用游标cursor读取

    利用游标cursor读取,需要用cursor的execute的方法执行sql,用cursor的fetchall获取执行的所有信息

    第一步:连接MySQL数据库

    config = {'host':'192.168.0.102',
            'user':'Yeung',
            'password':'sjm13802448449ys',
            'port':3306,
            'database':'python_data',
            'charset':'utf8'} 
    
    # 设置连接数据库的参数
    # 连接mysql数据库服务端
    # 分别输入主机ip,用户名,登录账号,端口,要连接的数据库名称以及编码
    
    conn = pymysql.connect(**config)  # 建立连接
    

    第二步:创建游标cursor

    cur = conn.cursor()   # 创建游标用于执行SQL语言
    
    # 编辑sql语句
    sql = 'SELECT * FROM data_01'  # 查找data_01这个表的所有信息
    
    # cursor的execute()执行sql语句命令
    data = cur.execute(sql)
    conn.commit()  # 完成命令
    

    第三步:用游标的fetchall方法获取所有执行sql得到的所有信息

    data = cur.fetchall()   # 返回结果为一个元祖
    data
    
    ((1, '李承峰', '男', datetime.date(1958, 12, 2), 61, '副教授', '计算机系', 15000, 13),
     (2, '王平', '女', datetime.date(1971, 5, 5), 48, '助教', '计算机系', 9000, 12),
     (3, '刘冰云', '女', datetime.date(1977, 8, 14), 42, '助教', '建筑系', 8000, 6),
     (4, '珂克桓', '男', datetime.date(1990, 6, 9), 29, '助教', '经管系', 9800, 8),
     (5, '张旭', '男', datetime.date(1969, 3, 12), 61, '副教授', '电子工程系', 12500, 9),
     (6, '黄剑峰', '男', datetime.date(1982, 5, 1), 37, '教授', '外语系', 21000, 6),
     (7, '朝阳路', '男', datetime.date(1984, 8, 10), 33, '副教授', '计算机系', 10500, 13),
     (8, '耶和华', '女', datetime.date(1980, 11, 3), 31, '助教', '外语系', 8000, 7),
     (9, '西奥菲', '女', datetime.date(1983, 5, 18), 36, '助教', '土木工程系', 9000, 6),
     (10, '张三', '男', datetime.date(1989, 9, 12), 30, '助教', '计算机系', 15000, 10),
     (11, '陈冰冰', '女', datetime.date(1978, 10, 12), 41, '副教授', '计算机系', 15000, 12),
     (12, '李晓峰', '男', datetime.date(1980, 10, 10), 39, '教授', '土木工程系', 20000, 13),
     (13, '顾小梦', '女', datetime.date(1980, 10, 10), 34, '教授', '建筑系', 22000, 14))
    

    第四步:将结果元祖列表化后传给DataFrame获得数据框

    data = list(data)
    data_result = pd.DataFrame(data,columns=['编号',
                                 '姓名',
                                 '性别',
                                 '生日',
                                 '年龄',
                                 '职位',
                                 '部门',
                                 '工资',
                                 '工作时间'])
    print(data_result.head())
    
    cur.close()  # 关闭游标
    conn.close()  # 关闭与数据库的连接
    
       编号   姓名 性别          生日  年龄   职位     部门     工资  工作时间
    0   1  李承峰  男  1958-12-02  61  副教授   计算机系  15000    13
    1   2   王平  女  1971-05-05  48   助教   计算机系   9000    12
    2   3  刘冰云  女  1977-08-14  42   助教    建筑系   8000     6
    3   4  珂克桓  男  1990-06-09  29   助教    经管系   9800     8
    4   5   张旭  男  1969-03-12  61  副教授  电子工程系  12500     9
    

    (2)方法2 → pd.read_sql()

    • read_sql(sql,con, index_col=None……),将SQL数据库和查询读取到DataFrame
      • 参数:
      • sql,要执行的SQL语句
      • con,数据库连接的参数

    第一步:连接MySQL数据库

    config = {'host':'192.168.0.102',
            'user':'Yeung',
            'password':'sjm13802448449ys',
            'port':3306,
            'database':'python_data',
            'charset':'utf8'} 
    
    # 设置连接数据库的参数
    # 连接mysql数据库服务端
    # 分别输入主机ip,用户名,登录账号,端口,要连接的数据库名称以及编码
    
    conn = pymysql.connect(**config)  # 建立连接
    

    第二步:read_sql读取SQL查询,并返回DataFrame数据框

    sql_2 = 'SELECT * FROM data_02'
    data_2 = pd.read_sql(sql_2,conn)
    print(data_2.head())
    
    conn.close()  # 关闭连接
    
        Tno Tname Tsex  Age Prof   college
    0  1001    赤峰    男   61  副教授   中山大学   
    1  1002   王平风    女   48   助教      北京大学
    2  1003   刘冰云    女   42   助教      南京大学
    3  1004   珂克桓    男   29   助教  中山大学    
    4  1005   张旭雨    男   50   讲师    上海交通大学
    

    (3)方法3 → pd.read_sql_query()

    • read_sql_query(sql,con, index_col=None……),将SQL查询读取到DataFrame数据框
      • 参数:
      • sql,要执行的SQL语句
      • con,数据库连接的参数

    第一步:连接MySQL数据库

    config = {'host':'192.168.0.102',
            'user':'Yeung',
            'password':'sjm13802448449ys',
            'port':3306,
            'database':'python_data',
            'charset':'utf8'} 
    
    # 设置连接数据库的参数
    # 连接mysql数据库服务端
    # 分别输入主机ip,用户名,登录账号,端口,要连接的数据库名称以及编码
    
    conn = pymysql.connect(**config)  # 建立连接
    

    第二步:read_sql_query读取SQL查询,并返回DataFrame数据框

    sql_3 = 'SELECT * FROM customers'
    data_3 = pd.read_sql_query(sql_3,conn)
    print(data_3.head())
    
    conn.close()  # 关闭连接
    
          cust_id      cust_name          cust_address cust_city cust_state  \
    0  1000000001   Village Toys        200 Maple Lane   Detroit         MI   
    1  1000000002     Kids Place  333 South Lake Drive  Columbus         OH   
    2  1000000003        Fun4All         1 Sunny Place    Muncie         IN   
    3  1000000004        Fun4All   829 Riverside Drive   Phoenix         AZ   
    4  1000000005  The Toy Store      4545 53rd Street   Chicago         IL   
    
      cust_zip cust_country        cust_contact             cust_email  
    0    44444          USA          John Smith  sales@villagetoys.com  
    1    43333          USA      Michelle Green                   None  
    2    42222          USA           Jim Jones     jjones@fun4all.com  
    3    88888          USA  Denise L. Stephens  dstephens@fun4all.com  
    4    54545          USA          Kim Howard                   None  
    

    二、读取数据库文件

    使用sqlite3第三方库读取数据库文件 .db。

    SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是在世界上最广泛部署的SQL数据库引擎。SQLite源代码不受版权限制。

    import sqlite3
    os.chdir(r'E:\python_learn\train')  # 相对路径
    
    
    cnn = sqlite3.connect('douban_comment_data.db')  # 建立连接
    sql_query = 'SELECT * FROM comment'
    data = pd.read_sql_query(sql_query,cnn)
    
    data.head()
    
    返回数据前5条.png

    相关文章

      网友评论

          本文标题:数据获取_数据库的读取与存储

          本文链接:https://www.haomeiwen.com/subject/lgatmhtx.html