寒假打卡24-2月11日

数据存储

在本篇文章中,我们将介绍如何使用 Python 存储数据,包括将数据存储到 CSV、JSON 文件,以及 MySQL、PostgreSQL 和 MongoDB 数据库。我们还将介绍 Redis 在爬虫中的应用。

1. 存储数据到 CSV 文件

基本用法

使用 csv 模块将数据写入 CSV 文件。

import csv

data = [
    {'name': 'Alice', 'age': 30, 'city': 'New York'},
    {'name': 'Bob', 'age': 25, 'city': 'San Francisco'},
    {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
]

with open('data.csv', 'w', newline='') as csvfile:
    fieldnames = ['name', 'age', 'city']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
    writer.writeheader()
    for row in data:
        writer.writerow(row)

读取 CSV 文件

使用 csv 模块读取 CSV 文件。

import csv

with open('data.csv', 'r') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)

2. 存储数据到 JSON 文件

基本用法

使用 json 模块将数据写入 JSON 文件。

import json

data = [
    {'name': 'Alice', 'age': 30, 'city': 'New York'},
    {'name': 'Bob', 'age': 25, 'city': 'San Francisco'},
    {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
]

with open('data.json', 'w') as jsonfile:
    json.dump(data, jsonfile, indent=4)

读取 JSON 文件

使用 json 模块读取 JSON 文件。

import json

with open('data.json', 'r') as jsonfile:
    data = json.load(jsonfile)
    print(data)

3. 存储数据到 MySQL 数据库

安装 pymysql

首先,我们需要安装 pymysql。可以使用以下命令通过 pip 安装:

pip install pymysql

基本用法

使用 pymysql 连接 MySQL 数据库并存储数据。

import pymysql

# 连接 MySQL 数据库
connection = pymysql.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

try:
    with connection.cursor() as cursor:
        # 创建表
        cursor.execute("""
            CREATE TABLE IF NOT EXISTS users (
                id INT AUTO_INCREMENT PRIMARY KEY,
                name VARCHAR(255),
                age INT,
                city VARCHAR(255)
            )
        """)
        
        # 插入数据
        sql = "INSERT INTO users (name, age, city) VALUES (%s, %s, %s)"
        data = [
            ('Alice', 30, 'New York'),
            ('Bob', 25, 'San Francisco'),
            ('Charlie', 35, 'Chicago')
        ]
        cursor.executemany(sql, data)
        connection.commit()
finally:
    connection.close()

读取数据

使用 pymysql 读取 MySQL 数据库中的数据。

import pymysql

# 连接 MySQL 数据库
connection = pymysql.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

try:
    with connection.cursor() as cursor:
        # 查询数据
        cursor.execute("SELECT * FROM users")
        result = cursor.fetchall()
        for row in result:
            print(row)
finally:
    connection.close()

4. 存储数据到 MongoDB 数据库

安装 pymongo

首先,我们需要安装 pymongo。可以使用以下命令通过 pip 安装:

pip install pymongo

基本用法

使用 pymongo 连接 MongoDB 数据库并存储数据。

import pymongo

# 连接 MongoDB 数据库
client = pymongo.MongoClient('localhost', 27017)
db = client['yourdatabase']
collection = db['users']

# 插入数据
data = [
    {'name': 'Alice', 'age': 30, 'city': 'New York'},
    {'name': 'Bob', 'age': 25, 'city': 'San Francisco'},
    {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
]
collection.insert_many(data)

读取数据

使用 pymongo 读取 MongoDB 数据库中的数据。

import pymongo

# 连接 MongoDB 数据库
client = pymongo.MongoClient('localhost', 27017)
db = client['yourdatabase']
collection = db['users']

# 查询数据
for user in collection.find():
    print(user)

5. Redis 在爬虫中的应用

安装 redis-py

首先,我们需要安装 redis-py。可以使用以下命令通过 pip 安装:

pip install redis

基本用法

使用 redis-py 连接 Redis 数据库并存储数据。

import redis

# 连接 Redis 数据库
client = redis.StrictRedis(host='localhost', port=6379, db=0)

# 存储数据
client.set('name', 'Alice')
client.set('age', 30)
client.set('city', 'New York')

读取数据

使用 redis-py 读取 Redis 数据库中的数据。

import redis

# 连接 Redis 数据库
client = redis.StrictRedis(host='localhost', port=6379, db=0)

# 读取数据
name = client.get('name').decode('utf-8')
age = int(client.get('age'))
city = client.get('city').decode('utf-8')
print(f'Name: {name}, Age: {age}, City: {city}')

总结

在本篇文章中,我们介绍了如何使用 Python 存储数据,包括将数据存储到 CSV、JSON 文件,以及 MySQL、PostgreSQL 和 MongoDB 数据库。我们还介绍了 Redis 在爬虫中的应用。通过掌握这些知识,你能够将爬取的数据保存到不同的数据存储中,以便 ▋

posted @ 2025-02-11 09:12  aallofitisst  阅读(17)  评论(0)    收藏  举报