Welcome to my blog.|

Khru

园龄:2年11个月粉丝:22关注:1

2022-09-08 19:02阅读: 38评论: 0推荐: 0

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数据库建立连接时需要指定用户, 密码等参数.

本文作者:khrushchefox

本文链接:https://www.cnblogs.com/khrushchefox/p/16670575.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Khru  阅读(38)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起