当前位置: 首页 > article >正文

青少年编程与数学 02-008 Pyhon语言编程基础 23课题、数据库操作

青少年编程与数学 02-008 Pyhon语言编程基础 23课题、数据库操作

  • 一、访问数据库
  • 二、SQL Server
      • 使用pyodbc
      • 使用pymssql
      • 注意事项
  • 三、MySQL
      • 使用mysql-connector-python
      • 使用PyMySQL
      • 注意事项
  • 四、PostgreSQL
      • 1. 安装`psycopg2`库
      • 2. 连接到PostgreSQL数据库
      • 3. 执行SQL查询
      • 4. 插入、更新和删除数据
      • 5. 关闭游标和连接
      • 6. 异常处理
  • 五、练习
      • 项目结构
      • 1. 初始化数据库和表
      • 2. 数据库操作函数
      • 3. 主程序入口
      • 注意事项

课题摘要: 本文介绍了在Python中访问和操作数据库的基本步骤,包括选择数据库驱动、安装驱动、建立连接、创建游标对象、执行SQL查询、处理结果、提交事务以及关闭连接。文中提供了使用SQLite、SQL Server、MySQL和PostgreSQL的示例代码,展示了如何连接数据库、执行查询和插入数据。此外,还讨论了使用ORM(对象关系映射)的优势和如何使用SQLAlchemy库。文章最后提供了一个简单的图书管理系统项目结构和代码示例,包括初始化数据库、数据库操作函数和主程序入口,说明了如何添加、列出和查找书籍。这些内容为在Python中进行数据库操作提供了全面的指导。


一、访问数据库

在Python程序中访问数据库通常涉及以下几个步骤:

  1. 选择数据库驱动
    根据你使用的数据库类型(如MySQL、PostgreSQL、SQLite、Oracle等),你需要选择一个合适的数据库驱动或API。例如,对于MySQL,你可以使用mysql-connector-python或者PyMySQL;对于PostgreSQL,可以使用psycopg2;SQLite则有内置的sqlite3模块。

  2. 安装数据库驱动
    使用pip工具来安装相应的数据库驱动。例如,要安装MySQL的连接器,可以在命令行运行:

    pip install mysql-connector-python
    
  3. 建立数据库连接
    使用所选驱动提供的方法来创建一个到数据库的连接。这通常需要提供数据库的主机名、端口号、用户名和密码等信息。

    import mysql.connector
    
    connection = mysql.connector.connect(
        host='localhost',
        user='your_username',
        password='your_password',
        database='your_database'
    )
    
  4. 创建游标对象
    一旦建立了连接,下一步是创建一个游标对象,它允许你执行SQL语句。

    cursor = connection.cursor()
    
  5. 执行SQL查询
    使用游标对象执行SQL查询。

    cursor.execute("SELECT * FROM your_table")
    
  6. 处理结果
    如果你的查询返回了数据,那么你可以使用游标对象的方法来获取这些数据,比如fetchone()fetchall()等。

    results = cursor.fetchall()
    for row in results:
        print(row)
    
  7. 提交事务
    对于修改数据库的SQL语句(INSERT, UPDATE, DELETE),你需要调用connection.commit()来保存更改。

    connection.commit()
    
  8. 关闭连接
    完成所有操作后,确保关闭游标和连接以释放资源。

    cursor.close()
    connection.close()
    

这里是一个完整的例子,演示如何从SQLite数据库中读取数据:

import sqlite3

# 建立连接
conn = sqlite3.connect('example.db')
c = conn.cursor()

# 执行查询
c.execute('SELECT * FROM stocks')

# 获取并打印结果
print(c.fetchall())

# 关闭连接
conn.close()

请根据你实际使用的数据库调整上述代码。如果你需要更高级的功能,如ORM(对象关系映射),可以考虑使用像SQLAlchemy这样的库,它可以简化与数据库的交互,并提供更Pythonic的方式来处理数据。

二、SQL Server

在Python中操作SQL Server数据库,你可以使用几个流行的库,其中最常用的是pyodbcpymssql。以下是使用这两个库的基本步骤:

使用pyodbc

  1. 安装pyodbc

    pip install pyodbc
    
  2. 连接数据库

    import pyodbc
    
    # 连接字符串
    conn_str = (
        r'DRIVER={ODBC Driver 17 for SQL Server};'
        r'SERVER=服务器地址;'
        r'DATABASE=数据库名;'
        r'UID=用户名;'
        r'PWD=密码'
    )
    
    # 建立连接
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
    
  3. 执行SQL语句

    # 执行查询
    cursor.execute("SELECT * FROM 表名")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    # 执行插入、更新或删除
    cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (?, ?)", (1,2))
    conn.commit()  # 提交事务
    
  4. 关闭连接

    cursor.close()
    conn.close()
    

使用pymssql

  1. 安装pymssql

    pip install pymssql
    
  2. 连接数据库

    import pymssql
    
    # 连接字符串
    conn = pymssql.connect(server='服务器地址', user='用户名', password='密码', database='数据库名')
    cursor = conn.cursor()
    
  3. 执行SQL语句

    # 执行查询
    cursor.execute("SELECT * FROM 表名")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    # 执行插入、更新或删除
    cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (%s, %s)", (1,2))
    conn.commit()  # 提交事务
    
  4. 关闭连接

    cursor.close()
    conn.close()
    

注意事项

  • 确保你已经安装了适用于SQL Server的ODBC驱动程序,对于pyodbc来说,这是必需的。
  • 替换连接字符串中的服务器地址、数据库名、用户名和密码为你的实际信息。
  • 在执行插入、更新或删除操作后,记得调用commit()方法来提交事务。
  • 错误处理:在实际应用中,你应该添加错误处理逻辑来处理可能出现的异常。

这些是基本的步骤和代码示例,根据你的具体需求,可能需要进行相应的调整和优化。

三、MySQL

在Python中操作MySQL数据库,你可以使用mysql-connector-pythonPyMySQL这两个库。以下是使用这两个库的基本步骤:

使用mysql-connector-python

  1. 安装mysql-connector-python

    pip install mysql-connector-python
    
  2. 连接数据库

    import mysql.connector
    
    # 连接配置
    config = {
        'user': '用户名',
        'password': '密码',
        'host': '服务器地址',
        'database': '数据库名',
        'raise_on_warnings': True
    }
    
    # 建立连接
    cnx = mysql.connector.connect(**config)
    cursor = cnx.cursor()
    
  3. 执行SQL语句

    # 执行查询
    cursor.execute("SELECT * FROM 表名")
    for row in cursor:
        print(row)
    
    # 执行插入、更新或删除
    cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (%s, %s)", (1,2))
    cnx.commit()  # 提交事务
    
  4. 关闭连接

    cursor.close()
    cnx.close()
    

使用PyMySQL

  1. 安装PyMySQL

    pip install PyMySQL
    
  2. 连接数据库

    import pymysql
    
    # 连接配置
    connection = pymysql.connect(host='服务器地址',
                                 user='用户名',
                                 password='密码',
                                 database='数据库名',
                                 charset='utf8mb4',
                                 cursorclass=pymysql.cursors.DictCursor)
    
  3. 执行SQL语句

    # 使用with语句自动管理连接和游标
    with connection.cursor() as cursor:
        # 执行查询
        cursor.execute("SELECT * FROM 表名")
        result = cursor.fetchall()
        for row in result:
            print(row)
    
        # 执行插入、更新或删除
        cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (%s, %s)", (1,2))
        connection.commit()  # 提交事务
    
  4. 关闭连接

    connection.close()
    

注意事项

  • 确保MySQL服务正在运行,并且你有正确的权限访问数据库。
  • 替换连接配置中的服务器地址、数据库名、用户名和密码为你的实际信息。
  • 在执行插入、更新或删除操作后,记得调用commit()方法来提交事务。
  • 错误处理:在实际应用中,你应该添加错误处理逻辑来处理可能出现的异常。
  • 使用with语句可以确保即使在发生异常的情况下,连接和游标也能被正确关闭。

这些是基本的步骤和代码示例,根据你的具体需求,可能需要进行相应的调整和优化。

四、PostgreSQL

要在Python程序中操作PostgreSQL数据库,你可以使用psycopg2库,这是一个流行的PostgreSQL适配器,允许你连接并操作PostgreSQL数据库。以下是基本的步骤和代码示例:

1. 安装psycopg2

首先,你需要安装psycopg2库,可以使用pip进行安装:

pip install psycopg2

或者,如果你需要一个二进制轮子(wheel),可以使用psycopg2-binary

pip install psycopg2-binary

2. 连接到PostgreSQL数据库

使用psycopg2连接到PostgreSQL数据库的基本步骤如下:

import psycopg2

# 数据库连接参数
conn_params = {
    'dbname': 'your_database_name',
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_host',
    'port': '5432'
}

# 建立连接
conn = psycopg2.connect(**conn_params)

# 创建游标对象
cur = conn.cursor()

# 打印连接信息
print("连接成功")

3. 执行SQL查询

你可以使用游标对象执行SQL查询并获取结果:

# 执行 SQL 查询
cur.execute("SELECT * FROM your_table_name;")

# 获取查询结果
rows = cur.fetchall()

# 输出结果
for row in rows:
    print(row)

4. 插入、更新和删除数据

对于插入、更新或删除操作,你也需要使用游标对象执行SQL语句,并提交事务:

# 插入数据
cur.execute("INSERT INTO your_table_name (column1, column2) VALUES (%s, %s)", (value1, value2))
conn.commit()

# 更新数据
cur.execute("UPDATE your_table_name SET column1 = %s WHERE column2 = %s", (new_value1, condition_value2))
conn.commit()

# 删除数据
cur.execute("DELETE FROM your_table_name WHERE column1 = %s", (value1,))
conn.commit()

5. 关闭游标和连接

操作完成后,记得关闭游标和连接:

cur.close()
conn.close()

6. 异常处理

在生产环境中,应该加入异常处理以避免程序崩溃:

import psycopg2
from psycopg2 import OperationalError

def connect_to_db():
    try:
        conn = psycopg2.connect(
            dbname="your_database_name",
            user="your_username",
            password="your_password",
            host="your_host",
            port="your_port"
        )
        print("连接成功!")
        return conn
    except OperationalError as e:
        print(f"连接失败: {e}")
        return None

def fetch_data():
    conn = connect_to_db()
    if conn:
        try:
            cur = conn.cursor()
            cur.execute("SELECT * FROM your_table_name;")
            rows = cur.fetchall()
            for row in rows:
                print(row)
        except Exception as e:
            print(f"查询失败: {e}")
        finally:
            cur.close()
            conn.close()

fetch_data()

以上步骤和代码示例提供了在Python中操作PostgreSQL数据库的基本方法,包括连接、查询、插入、更新和删除数据等操作。

五、练习

创建一个完整的Python项目来管理个人图书涉及到多个步骤,包括设置数据库、编写代码以及可能的前端界面(这里我们只关注后端)。以下是一个简单的项目结构和代码示例,用于创建和操作一个个人图书管理系统。

项目结构

personal_library/
│
├── database/
│   └── init_db.py  # 初始化数据库和表
│
├── lib/
│   └── database.py  # 数据库操作函数
│
└── main.py  # 主程序入口

1. 初始化数据库和表

database/init_db.py中,我们将创建数据库和图书表:

import psycopg2
from psycopg2 import sql

def create_database():
    conn = None
    try:
        # 连接到 PostgreSQL
        conn = psycopg2.connect(
            dbname="postgres",
            user="your_username",
            password="your_password",
            host="your_host",
            port="5432"
        )
        cur = conn.cursor()
        # 创建数据库
        cur.execute("CREATE DATABASE personal_library_db;")
        print("Database created successfully.")
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if conn is not None:
            conn.close()

def create_table():
    conn = None
    try:
        # 连接到创建的数据库
        conn = psycopg2.connect(
            dbname="personal_library_db",
            user="your_username",
            password="your_password",
            host="your_host",
            port="5432"
        )
        cur = conn.cursor()
        # 创建图书表
        cur.execute("""
            CREATE TABLE books (
                id SERIAL PRIMARY KEY,
                title VARCHAR(255) NOT NULL,
                author VARCHAR(255) NOT NULL,
                published_year INT,
                isbn VARCHAR(13),
                genre VARCHAR(100)
            );
        """)
        print("Table created successfully.")
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if conn is not None:
            conn.close()

if __name__ == "__main__":
    create_database()
    create_table()

2. 数据库操作函数

lib/database.py中,我们将编写一些函数来操作数据库:

import psycopg2

def connect_db():
    conn = psycopg2.connect(
        dbname="personal_library_db",
        user="your_username",
        password="your_password",
        host="your_host",
        port="5432"
    )
    return conn

def add_book(title, author, published_year, isbn, genre):
    conn = connect_db()
    cur = conn.cursor()
    cur.execute("""
        INSERT INTO books (title, author, published_year, isbn, genre)
        VALUES (%s, %s, %s, %s, %s);
    """, (title, author, published_year, isbn, genre))
    conn.commit()
    cur.close()
    conn.close()

def list_books():
    conn = connect_db()
    cur = conn.cursor()
    cur.execute("SELECT * FROM books;")
    rows = cur.fetchall()
    cur.close()
    conn.close()
    return rows

def find_book_by_title(title):
    conn = connect_db()
    cur = conn.cursor()
    cur.execute("SELECT * FROM books WHERE title = %s;", (title,))
    rows = cur.fetchall()
    cur.close()
    conn.close()
    return rows

# 可以继续添加更多的函数,比如更新和删除书籍

3. 主程序入口

main.py中,我们将编写主程序逻辑:

from lib.database import add_book, list_books, find_book_by_title

def main():
    print("Welcome to the Personal Library Manager!")
    
    # 示例:添加书籍
    add_book("1984", "George Orwell", 1949, "978-0451524935", "Dystopian")
    add_book("To Kill a Mockingbird", "Harper Lee", 1960, "978-0061120084", "Fiction")
    
    # 示例:列出所有书籍
    books = list_books()
    for book in books:
        print(book)
    
    # 示例:按标题查找书籍
    books = find_book_by_title("1984")
    for book in books:
        print(book)

if __name__ == "__main__":
    main()

注意事项

  • 确保你已经安装了psycopg2库。
  • 替换数据库连接参数中的用户名、密码、主机和端口为你的实际信息。
  • 这个项目是一个非常基础的示例,没有错误处理和输入验证,这些在实际应用中是非常重要的。
  • 你可以根据需要扩展更多的功能,比如删除书籍、更新书籍信息、搜索功能等。
  • 这个项目没有包含用户界面,你可以考虑使用Flask或Django这样的框架来创建一个Web界面。

这个项目提供了一个基本的框架,你可以在此基础上进行扩展和改进,以满足更多的需求。


http://www.kler.cn/a/538060.html

相关文章:

  • at coder ABC 392
  • 四次挥手详解
  • Nginx部署Umi React前端项目标准配置
  • 【R语言】plyr包和dplyr包
  • 学习threejs,使用Lensflare模拟镜头眩光
  • AI安全最佳实践:AI应用开发安全评估矩阵(上)
  • 蓝桥杯之c++入门(六)【string(practice)】
  • NFT Insider #168:The Sandbox 推出新春{金蛇礼服}套装;胖企鹅合作 LINE Minini
  • java基础3(黑马)
  • 2014 年中央、国家机关公务员录用考试 《申论》(市地以下)真题详解
  • 人工智能:从概念到未来
  • lvglllllllllll
  • GRU 和 LSTM 公式推导与矩阵变换过程图解
  • 2024 JAVA面试题
  • 【C++入门讲解】
  • uniapp商城之购物车模块
  • Vmware 与 Device/Credential Guard不兼容解决方法
  • CSP晋级组比赛生成文件夹与文件通用代码Python
  • oCam:免费且强大的录屏软件
  • curl 查看HTTP 响应头信息
  • 简化API 工作流程:Apipost整合了 Postman、Swagger 和 JMeter
  • JS实现灯光闪烁效果
  • 基于对比增强的超声视频的域知识为乳腺癌诊断提供了深度学习
  • kafka服务端之日志存储
  • 计算机考研复试准备之Python编程技巧-自用
  • Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。函数的用法和使用场景