python怎么查询数据库

Python的sqlite3pymysqlsqlalchemy等库

Python中查询数据库是一项常见的任务,通常用于数据存储、检索和处理,Python提供了多种库来与不同类型的数据库进行交互,如SQLite、MySQL、PostgreSQL等,以下是详细的步骤和示例代码,展示如何使用Python查询数据库。

python怎么查询数据库

选择数据库和安装相应的库

你需要选择一个数据库并安装相应的Python库,以下是一些常见的数据库及其对应的Python库:

  • SQLite: 内置于Python标准库中,无需额外安装。
  • MySQL: 使用mysql-connector-pythonPyMySQL库。
  • PostgreSQL: 使用psycopg2库。

安装库

pip install mysql-connector-python psycopg2

连接到数据库

连接到数据库是查询的第一步,以下是如何连接到不同类型的数据库的示例。

SQLite

import sqlite3
# 连接到SQLite数据库(如果数据库不存在,则会自动创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

MySQL

import mysql.connector
# 连接到MySQL数据库
conn = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="yourdatabase"
)
cursor = conn.cursor()

PostgreSQL

import psycopg2
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
    host="localhost",
    database="yourdatabase",
    user="yourusername",
    password="yourpassword"
)
cursor = conn.cursor()

创建表和插入数据

在查询之前,通常需要有一个表来存储数据,以下是如何创建表和插入数据的示例。

SQLite

# 创建表
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', 25))
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Bob', 30))
conn.commit()

MySQL

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT
)
''')
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Bob', 30))
conn.commit()

PostgreSQL

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT
)
''')
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Bob', 30))
conn.commit()

查询数据

查询数据是数据库操作的核心,以下是如何执行查询并获取结果的示例。

python怎么查询数据库

SQLite

# 查询所有用户
cursor.execute('SELECT  FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

MySQL

# 查询所有用户
cursor.execute('SELECT  FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

PostgreSQL

# 查询所有用户
cursor.execute('SELECT  FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

关闭连接

在完成数据库操作后,务必关闭连接以释放资源。

cursor.close()
conn.close()

使用ORM(对象关系映射)

除了直接使用SQL查询,Python还提供了ORM(对象关系映射)工具,如SQLAlchemy,它可以帮助你以更面向对象的方式操作数据库。

安装SQLAlchemy

pip install sqlalchemy

使用SQLAlchemy查询数据

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建引擎
engine = create_engine('sqlite:///example.db')
Base = declarative_base()
# 定义模型
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
# 查询所有用户
users = session.query(User).all()
for user in users:
    print(user.id, user.name, user.age)
# 关闭会话
session.close()

常见问题及解决方案

Q1: 如何防止SQL注入?

A1: 使用参数化查询或ORM工具可以有效防止SQL注入,在SQLite中使用作为占位符,在MySQL中使用%s作为占位符。

Q2: 如何处理数据库连接错误?

A2: 可以使用try-except块捕获异常,并在发生错误时进行适当的处理。

python怎么查询数据库

try:
    conn = mysql.connector.connect(host="localhost", user="yourusername", password="yourpassword", database="yourdatabase")
except mysql.connector.Error as err:
    print(f"Error: {err}")

Python提供了多种方式来查询数据库,无论是直接使用SQL还是通过ORM工具,都可以方便地进行数据库操作。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/81403.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月29日 04:12
下一篇 2025年7月29日 04:21

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN