python如何连接数据库操作

在 Python 中连接和操作数据库通常使用数据库驱动程序或 ORM(对象关系映射)工具。以下是常见的数据库连接和操作方式:

1. 连接关系型数据库(如 MySQL、PostgreSQL、SQLite)
使用 mysql-connector-python 连接 MySQL
安装 MySQL 驱动:

pip install mysql-connector-python

连接数据库并操作:

import mysql.connector

# 连接数据库
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="yourpassword",
    database="testdb"
)

# 创建游标
cursor = conn.cursor()

# 执行 SQL 查询
cursor.execute("SELECT * FROM users")

# 获取结果
results = cursor.fetchall()
for row in results:
    print(row)

# 关闭连接
cursor.close()
conn.close()

使用 psycopg2 连接 PostgreSQL
安装 PostgreSQL 驱动:

pip install psycopg2

连接数据库并操作:

import psycopg2

# 连接数据库
conn = psycopg2.connect(
    host="localhost",
    dbname="testdb",
    user="postgres",
    password="yourpassword"
)

# 创建游标
cursor = conn.cursor()

# 执行 SQL 查询
cursor.execute("SELECT * FROM users")

# 获取结果
results = cursor.fetchall()
for row in results:
    print(row)

# 关闭连接
cursor.close()
conn.close()

使用 sqlite3 连接 SQLite
SQLite 是 Python 标准库的一部分,无需额外安装。

import sqlite3

# 连接数据库(如果数据库不存在,会自动创建)
conn = sqlite3.connect("example.db")

# 创建游标
cursor = conn.cursor()

# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
)
""")

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

# 提交事务
conn.commit()

# 查询数据
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:
    print(row)

# 关闭连接
cursor.close()
conn.close()

2. 使用 ORM 工具(如 SQLAlchemy)
ORM(对象关系映射)工具可以将数据库表映射为 Python 类,简化数据库操作。

使用 SQLAlchemy 连接 MySQL
安装 SQLAlchemy 和 MySQL 驱动:

pip install sqlalchemy mysql-connector-python

使用 SQLAlchemy 操作数据库:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建引擎
engine = create_engine("mysql+mysqlconnector://root:yourpassword@localhost/testdb")

# 创建基类
Base = declarative_base()

# 定义模型
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

# 创建表
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()

# 查询数据
users = session.query(User).all()
for user in users:
    print(user.id, user.name, user.age)

# 关闭会话
session.close()

3. 连接 NoSQL 数据库(如 MongoDB)
使用 pymongo 连接 MongoDB
安装 MongoDB 驱动:

pip install pymongo

连接 MongoDB 并操作:

from pymongo import MongoClient

# 连接 MongoDB
client = MongoClient("mongodb://localhost:27017/")

# 选择数据库
db = client["testdb"]

# 选择集合(类似于表)
collection = db["users"]

# 插入文档
user = {"name": "Alice", "age": 30}
collection.insert_one(user)

# 查询文档
users = collection.find()
for user in users:
    print(user)

# 关闭连接
client.close()

4. 使用 Pandas 操作数据库
Pandas 可以方便地将数据库查询结果转换为 DataFrame。

使用 Pandas 读取 SQL 数据
安装 Pandas 和数据库驱动:

pip install pandas sqlalchemy

读取 SQL 数据:

import pandas as pd
from sqlalchemy import create_engine

# 创建引擎
engine = create_engine("mysql+mysqlconnector://root:yourpassword@localhost/testdb")

# 读取 SQL 数据到 DataFrame
df = pd.read_sql("SELECT * FROM users", engine)
print(df)

总结

  • 对于关系型数据库(如 MySQL、PostgreSQL、SQLite),可以使用
    mysql-connector-python、psycopg2 或 sqlite3。
  • 对于 ORM 操作,推荐使用 SQLAlchemy。
  • 对于 NoSQL 数据库(如 MongoDB),可以使用 pymongo。
  • 如果需要将数据库数据转换为 DataFrame,可以使用 Pandas。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻南瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值