Python操作数据库案例mysql, redis, mongodb, neo4j


前言

随着数据科学和大数据技术的快速发展,数据库管理成为了一个不可或缺的技能。Python,作为一种广泛使用的编程语言,提供了丰富的库来简化与各种数据库的交互。本文将介绍如何使用Python操作四种主流的数据库:MySQL、Redis、MongoDB和Neo4j。我们将从库的安装开始,然后深入到基础的增删改查(CRUD)操作。无论你是数据科学家、后端开发者还是仅仅对数据库有兴趣的读者,这篇文章都将为你提供实用的指导。

本文所提供的代码示例仅作为入门参考,旨在展示基础的数据库操作流程。然而,每种数据库及其对应的Python库都拥有更为丰富和复杂的功能集,这些功能在实际应用中具有广泛的用途。因此,强烈建议读者进一步参阅各数据库和库的官方文档,以获取更全面、深入的技术细节和应用方法。这不仅能够帮助您更精准地满足项目需求,也能拓宽您在数据库管理和操作方面的专业视野。


一、python库的安装

MySQL

对于MySQL,可以使用pymysql库。安装命令如下:

pip install pymysql

也可以使用下面这个

pip install mysql-connector-python

Redis

对于Redis,可以使用redis库。安装命令如下:

pip install redis

MongoDB

对于MongoDB,可以使用pymongo库。安装命令如下:

pip install pymongo

Neo4j

对于Neo4j,可以使用neo4j库。安装命令如下:

pip install neo4j

MySQL案例

pymysql案例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pymysql

# Connect to the database
conn = pymysql.connect(host='localhost', user='ai', password='12345678', database='mydatabase')
cursor = conn.cursor()

# Create table
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

# Clear the table
cursor.execute("DELETE FROM users")
conn.commit()

# Insert a record
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
conn.commit()

# Query records
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

# Update a record
cursor.execute("UPDATE users SET age=31 WHERE name='Alice'")
conn.commit()

# Delete a record
cursor.execute("DELETE FROM users WHERE name='Alice'")
conn.commit()

# Close the connection
cursor.close()
conn.close()

mysql-connector-python案例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import mysql.connector

# Connect to the database
conn = mysql.connector.connect(host='localhost', user='ai', password='12345678', database='mydatabase')
cursor = conn.cursor()

# Create table
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

# Clear the table
cursor.execute("DELETE FROM users")

# Insert a record
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
conn.commit()

# Query records
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

# Update a record
cursor.execute("UPDATE users SET age=31 WHERE name='Alice'")
conn.commit()

# Delete a record
cursor.execute("DELETE FROM users WHERE name='Alice'")
conn.commit()

# Close the connection
cursor.close()
conn.close()

Redis案例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import redis
# 连接数据库
r = redis.Redis(host='localhost', port=6379, db=0)
# 清空数据库
r.flushdb()
# 增加
r.set('name', 'Alice')
# 查询
print(r.get('name'))
# 更新
r.set('name', 'Bob')
# 删除
r.delete('name')

Mongodb案例

案例一

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pymongo import MongoClient
# 连接数据库
client = MongoClient('mongodb://localhost:27017/')
db = client['test_db']
# 清空集合
db['users'].delete_many({})
# 增加
db['users'].insert_one({'name': 'Alice', 'age': 30})
# 查询
print(list(db['users'].find()))
# 更新
db['users'].update_one({'name': 'Alice'}, {'$set': {'age': 31}})
# 删除
db['users'].delete_one({'name': 'Alice'})

案例二

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pymongo import MongoClient
# 连接到 MongoDB
client = MongoClient('mongodb://localhost:27017/')
# 选择或创建数据库
db = client['my_database']
# 获取所有集合名称
collection_names = db.list_collection_names()
# 删除所有集合
for name in collection_names:
    db.drop_collection(name)
print("所有集合已删除。")
collection = db.my_collection
document = {"name": "John", "age": 30, "city": "New York"}
collection.insert_one(document)
documents = [
    {"name": "Tom", "age": 33, "city": "New York"},
    {"name": "Marie", "age": 22, "city": "Boston"},
    {"name": "Mike", "age": 32, "city": "Chicago"}
]
collection.insert_many(documents)
query = {"name": "John"}
result = collection.find_one(query)
print(result)
results = collection.find({"age": {"$gt": 25}})
for result in results:
    print(result)
update_query = {"name": "John"}
new_values = {"$set": {"age": 40}}
collection.update_one(update_query, new_values)
delete_query = {"name": "John"}
collection.delete_one(delete_query)
client.close()

Neo4j案例

案例一

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from neo4j import GraphDatabase
# 连接数据库
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))
# 清空数据库
with driver.session() as session:
    session.run("MATCH (n) DETACH DELETE n")
# 增加
with driver.session() as session:
    session.run("CREATE (a:Person {name: 'Alice', age: 30})")
# 查询
with driver.session() as session:
    result = session.run("MATCH (a:Person) RETURN a.name, a.age")
    for record in result:
        print(record)
# 更新
with driver.session() as session:
    session.run("MATCH (a:Person {name: 'Alice'}) SET a.age = 31")
# 删除
with driver.session() as session:
    session.run("MATCH (a:Person {name: 'Alice'}) DELETE a")
# 关闭连接
driver.close()

案例二

以下是一个更复杂的Neo4j使用案例,涵盖了节点(Node)和边(Relationship)的增删改查操作。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from neo4j import GraphDatabase
# 初始化数据库连接
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))
# 清空整个数据库
def clear_database(tx):
    tx.run("MATCH (n) DETACH DELETE n")
# 创建节点和边
def create_node_and_relationship(tx):
    tx.run("CREATE (a:Person {name: 'Alice', age: 25})-[:KNOWS]->(b:Person {name: 'Bob', age: 30})")
# 查询节点
def query_node(tx):
    result = tx.run("MATCH (a:Person) WHERE a.name = 'Alice' RETURN a.name, a.age")
    for record in result:
        print(record)
# 更新节点属性
def update_node(tx):
    tx.run("MATCH (a:Person {name: 'Alice'}) SET a.age = 26")
# 删除节点(同时删除与其相关的边)
def delete_node(tx):
    tx.run("MATCH (a:Person {name: 'Alice'}) DETACH DELETE a")
# 创建边
def create_relationship(tx):
    tx.run("MATCH (a:Person), (b:Person) WHERE a.name = 'Alice' AND b.name = 'Bob' CREATE (a)-[:FRIENDS_WITH]->(b)")
# 删除边
def delete_relationship(tx):
    tx.run("MATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person) WHERE a.name = 'Alice' AND b.name = 'Bob' DELETE r")
# 执行操作
with driver.session() as session:
    session.execute_write(clear_database)  # 清空数据库
    session.execute_write(create_node_and_relationship)
    session.execute_read(query_node)
    session.execute_write(update_node)
    session.execute_write(create_relationship)
    session.execute_write(delete_relationship)
    session.execute_write(delete_node)

# 关闭数据库连接
driver.close()

总结

本文详细介绍了如何使用Python进行MySQL、Redis、MongoDB和Neo4j数据库的基础操作。我们从如何安装相应的Python库开始,然后探讨了如何进行基础的增删改查操作。通过这些基础案例,我们不仅可以更好地理解每种数据库的特点,还可以学习如何利用Python的强大功能来简化数据库管理任务。希望这篇文章能帮助你在数据库管理方面迈出坚实的一步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值