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
pymysql
与sqlite3
大致相同, 不过在与MySQL数据库建立连接时需要指定用户, 密码等参数.
本文作者:khrushchefox
本文链接:https://www.cnblogs.com/khrushchefox/p/16670575.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步