Python-数据库

数据库

SQLite

sqlite3模块API

  • 数据库连接对象 Connection

    • close() 关闭数据库连接.
    • commit() 提交数据库事务.
    • rollback() 回滚数据库事务.
    • cursor() 获得Cursor游标对象.
    • total_changes() 返回自数据库连接打开以来被修改、插入或删除的数据库总行数.
  • 游标对象 Cursor

    • execute(sql[, parameters]) 执行一条SQL语句.
    • executemany(sql[, seq_of_params]) 批量执行SQL语句.
    • fetchone() 从结果集中返回只有一条记录的序列.
    • fetchmany(size=cursor.arraysize) 从结果集中返回小于等于size的记录的序列.
    • fetchall() 从结果集中返回所有数据.

数据库操作

  • 查询

    import sqlite3
    
    try:
        # 1. 建立数据库连接
        con = sqlite3.connect('test_db.db')
        # 2. 创建游标对象
        cursor = con.cursor()
        # 3. 执行SQL查询操作
        sql = 'SELECT s_id, s_name, s_sex, s_birthday FROM student'
        cursor.execute(sql)
        # 4. 提取结果集
        result_set = cursor.fetchall()
        for row in result_set:
            print('学号: {} - 姓名: {} - 性别: {} - 生日: {}'.format(row[0], row[1], row[2], row[3]))
    except sqlite3.Error as e:
        print('数据查询发生错误: {}'.format(e))
    finally:
        # 5. 关闭游标
        if cursor:
            cursor.close()
        # 6. 关闭数据库连接
        if con:
            con.close()
    
    import sqlite3
    
    istr = input('请输入生日(yyyyMMdd): ')
    
    try:
        con = sqlite3.connect('test_db.db')
        cursor = con.cursor()
        sql = 'select s_id, s_name, s_sex, s_birthday from student where s_birthday < ?'
        cursor.execute(sql, [istr])  # 执行语句时为占位符传递实参, 参数放到序列或元组中
        result_set = cursor.fetchall()
        for row in result_set:
            print('学号: {} - 姓名: {} - 性别: {} - 生日: {}'.format(row[0], row[1], row[2], row[3]))
    except sqlite3.Error as e:
        print('数据查询发生错误: {}'.format(e))
    finally:
        if cursor:
            cursor.close()
        if con:
            con.close()
    
  • 插入

    import sqlite3
    
    i_name = input('请输入姓名: ')
    i_sex = input('请输入性别: ')
    i_birthday = input('请输入生日: ')
    
    try:
        con = sqlite3.connect('test_db.db')
        cursor = con.cursor()
        sql = 'insert into student (s_name, s_sex, s_birthday) values (?, ?, ?)'
        cursor.execute(sql, [i_name, i_sex, i_birthday])
        # 提交事务
        con.commit()
        print('插入数据成功. ')
    except sqlite3.Error as e:
        print('插入数据失败: {}'.format(e))
        # 失败则回滚事务
        con.rollback()
    finally:
        if cursor:
            cursor.close()
        if con:
            con.close()
    
  • 更新

    import sqlite3
    
    i_id = input('请输入学号: ')
    i_name = input('请输入姓名: ')
    i_sex = input('请输入性别: ')
    i_birthday = input('请输入生日: ')
    
    try:
        con = sqlite3.connect('test_db.db')
        cursor = con.cursor()
        sql = 'update student set s_name = ?, s_sex = ?, s_birthday = ? where s_id = ?'
        cursor.execute(sql, [i_name, i_sex, i_birthday, i_id])
        con.commit()
        print('更新数据成功. ')
    except sqlite3.Error as e:
        print('更新数据失败: {}'.format(e))
        con.rollback()
    finally:
        if cursor:
            cursor.close()
        if con:
            con.close()
    
  • 删除

    import sqlite3
    
    i_id = input('请输入要删除学生的学号: ')
    
    try:
        con = sqlite3.connect('test_db.db')
        cursor = con.cursor()
        sql = 'delete from student where s_id = ?'
        cursor.execute(sql, [i_id])
        con.commit()
        print('删除数据成功. ')
    except sqlite3.Error as e:
        print('删除数据失败: {}'.format(e))
        con.rollback()
    finally:
        if cursor:
            cursor.close()
        if con:
            con.close()
    

MySQL

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库, Python2中则使用mysqldb.

PyMySQL 遵循 Python 数据库 API v2.0 规范, 并包含了 pure-Python MySQL 客户端库.

pymysql模块API

pymysqlsqlite3大致相同, 不过在与MySQL数据库建立连接时需要指定用户, 密码等参数.

posted @ 2022-09-08 19:02  Khru  阅读(54)  评论(0)    收藏  举报