简单了解数据的存储

数据的存储

1、基本文件操作

打开一个文件:f = open('文件', 'w')    a=追加模式,r=只读模式,当然也可以加r(二进制的形式)
写入一个文件:write("hello world")
读一个文件:f.read()

2、with 与 open

with open('hello.txt', 'w') as f:
		f.write('hello world')

说明:with会自动关闭文件。

3、CSV文件的存取

主要涉及到pandas包的相关操作。
df = pandas.DataFrame(data)
df.to_csv('1.csv, index=None)      //可以进行一些参数的设置,比如:mode='a', header=False

df = pandas.read_csv('1.csv')      //csv文件的读取

4、JSON文件的存取

"""
json 支持多种格式, str, int, dict,list 等.

json.dumps 代表转字符串,比如字典转为字符串
json.loads 代表转为原本的格式

json.dump  代表把数据写入进去, 比如json.dump(数据, 文件名)
json.load  代表把数据下载下来, 比如json.load(文件名)

"""

import json

data = {'hanzi': '汉字'}
json_str = json.dumps(data, ensure_ascii=False)   # 为True时,是ASCII字符; 为False时,原来的格式输出。\
                                                        其他字段如排序:sort_key = True, 输出:indet=4(四个字段)
print(json_str)    # 在pycharm中体现不出来输出格式为str

5、XLSX文件的存储

(1)xlsxwriter

  import os
  import pandas as pd
  import xlsxwriter

  # 为了数据文件和程序文件的分离,我们可以选择新建文件夹,并在此文件夹下进行文件的读写
  if 'Myxlsxdata' not in os.listdir():
      os.mkdir('Myxlsxdata')

  # 切换到此文件夹下
  os.chdir('Myxlsxdata')

  # 导入数据,只导入需要的列.若有缺失值,显示为NULL
  books_data = pd.read_csv('result.csv', usecols=['titles'], na_values='NULL')
  titles = books_data['titles']

  # 新建文件名为Books.xlsx的电子表格工作薄
  workbook = xlsxwriter.Workbook('Books.xlsx')

  # 为创建的电子表格增加一个名为表1的表格,默认表名为sheet1, sheet2...
  worksheet = workbook.add_worksheet('豆瓣新书')

  nums = len(titles)  # 数据量

  # 第一行写入列名
  worksheet.write(0, 0, '图书封面')

  # 根据内容设置列宽
  worksheet.set_column('A:A', 20)

  # 插入图片和文本数据
  for i in range(1, nums):
      worksheet.insert_image(i, 0, titles[i] + '.jpg')
      worksheet.write(i, 1, titles[i])

  # 存储数据,关闭工作簿
  workbook.close()
  
  
  
  ## 和pandas连用
  import os
  import pandas as pd

  # 文件夹切换
  if 'Myxlsxdata' not in os.listdir():
      os.mkdir('Myxlsxdata')
  os.chdir('Myxlsxdata')

  # 数据1
  books_data = pd.read_csv('result.csv', usecols=['titles', 'authors', 'ratings', 'details'], na_values='NULL')
  df1 = pd.DataFrame(books_data)

  # 以xlsxwriter为引擎,创建writer对象,并初始化文件名为pandas_simple.xlsx
  writer = pd.ExcelWriter('pandas_moresheet.xlsx', engine='xlsxwriter')

  # 将DataFrame存储到writer里面
  df2.to_excel(writer, sheet_name='体测数据')

  # 关闭writer对象,并保存写入的数据
  writer.save()

  # 读取xlsx文件
  df = pd.read_excel('pandas_moresheet.xlsx', sheetname='体测数据')
  print(df)

6、openpyxl和pandas连用

  import os
  import pandas as pd
  from openpyxl import Workbook
  from openpyxl.utils.dataframe import dataframe_to_rows

  #  修改工作目录
  if 'Myxlsxdata' not in os.listdir():
      os.mkdir('Myxlsxdata')
  os.chdir('Myxlsxdata')

  # 创建数据
  data = {'代号': ['A', 'B', 'C', 'D'], '身高': [178, 177, 180, 175], '体重': [65, 70, 64, 67]}
  df = pd.DataFrame(data)

  # 创建工作簿
  wb = Workbook()
  #  插入表
  ws = wb.create_sheet("体测数据", 0)  # 0代表在开头插入,默认在末尾插入
  # 插入数据
  for r in dataframe_to_rows(df, index=True, header=True):
      ws.append(r)

  wb.save("pandas_openpyxl.xlsx")

  # 读取
  df = pd.read_excel('pandas_openpyxl.xlsx')
  print(df)

7、MySQL数据库

(1)创建:

	create database name character set 'utf8' collate 'utf8_general_ci'   // 直接创建uft数据库,最右边的参数可以不设置

(2)改变默认编码:

	在MySql下,查看编码:show variables LIKE '%CHAR&';    //默认时latinl,而不是utf8
	cd /etc/mysql/my.cnf或/etc/my.cnf:
		 [client]
		default-character-set = utf8
		
		 [mysqld]
		default-storage-engine = INNODB
		character-set-server = utf8
		collation-server = utf8_general_ci
		
	重启mysql:service mysql restart
	

(3)PyMysql的使用:

    import pymysql

    # 创建连接
    db = pymysql.connect(host="localhost", user="root", password="密码", db="PyDataBase", charset='utf8')
    # 获取游标,我们用它来执行数据库的操作
    cursor = db.cursor()
    

    #  打印列名与列定义
    def print_colnames():
        cursor.execute("SHOW COLUMNS FROM Py_Create;")
        col_names = cursor.fetchall()
        print(col_names)
        return col_names


    # 查询数据
    def pritn_alldata():
        cursor.execute("SELECT * FROM Py_Create;")
        data = cursor.fetchall()  # 获取全部数据
        print("All data: ", data)
        return data


    # 执行sql语句
    try:
        # 删除表
        # 在创建新表之前检查是否已经存在此表,若存在则先删除
        cursor.execute("DROP TABLE IF EXISTS Py_Create;")
        # 创建表
        cursor.execute("CREATE TABLE Py_Create(username VARCHAR (10), useraddr VARCHAR (20));")
        # 插入数据
        cursor.execute("INSERT INTO Py_Create (username,useraddr) VALUES ('员工一', '中国');")

        # 打印数据
        pritn_alldata()

        # 字段与记录的操作

        # 记录操作
        # 插入就是INSERT语句
        # 删除使用where
        cursor.execute("DELETE FROM Py_Create WHERE useraddr='美国'")

        # 打印数据
        pritn_alldata()

        # 打印修改前的列
        print_colnames()

        # 删除列
        cursor.execute("ALTER TABLE Py_Create DROP username;")
        # 添加列
        cursor.execute("ALTER TABLE Py_Create ADD COLUMN (age TINYINT UNSIGNED);")

        # 打印修改后的列
        print_colnames()
        # 关闭cursor
        cursor.close()

        # 提交上面的增删表和插入数据的操作到数据库
        db.commit()


    except:
        db.rollback()
        print("ERROR!")

    finally:
        # 关闭数据库连接
        db.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值