python数据分析:数据库基本操作(SQLite)

python数据分析:数据库基本操作(SQLite)

SQLite:
  • 关系型数据库管理系统
  • 嵌入式数据库,适用于嵌入式设备
  • SQLite不是C/S的数据库引擎
  • 集成在用户程序中
  • 实现了大多数SQL标准
连接数据库:
  • conn = sqlite3.connect(db_name)
    • 如果db_name存在,则读取数据库
    • 若不存在,则新建数据库
获取游标:
  • conn.cursor()
  • 一段私有的SQL工作区,用于暂时存放受SQL语句影响的数据(类似于指针)
CRUD操作:
  • cursor.execute(sql_str) 执行单条SQL语句
  • cursor.executemany(sql_str) SQL语句批量操作

fetchone() 接收一条返回结果行

fetchall() 接收全部返回结果行

conn.commit() 提交操作

关闭连接:
  • conn.close()
import sqlite3

db_path = 'test.sqlite'

conn = sqlite3.connect(db_path)
cur = conn.cursor()
conn.text_factory = str  # 处理中文,指定文本工厂为str类型
cur.execute('SELECT SQLITE_VERSION()')

print('SQLite版本:', str(cur.fetchone()[0]))

执行结果:
在这里插入图片描述

# 判断表是否存在
cur.execute("DROP TABLE IF EXISTS book")
# 新建表
cur.execute("CREATE TABLE book(id INT, name TEXT, price DOUBLE)")
# 逐行插入数据
cur.execute("INSERT INTO book VALUES(1,'肖秀荣考研书系列:肖秀荣(2017)考研政治命题人终极预测4套卷',14.40)")
cur.execute("INSERT INTO book VALUES(2,'法医秦明作品集:幸存者+清道夫+尸语者+无声的证词+第十一根手指(套装共5册) (两种封面随机发货)',100.00)")
cur.execute("INSERT INTO book VALUES(3,'活着本来单纯:丰子恺散文漫画精品集(收藏本)',30.90)")
cur.execute("INSERT INTO book VALUES(4,'自在独行:贾平凹的独行世界',26.80)")
cur.execute("INSERT INTO book VALUES(5,'当你的才华还撑不起你的梦想时',23.00)")
cur.execute("INSERT INTO book VALUES(6,'巨人的陨落(套装共3册)',84.90)")
cur.execute("INSERT INTO book VALUES(7,'孤独深处(收录雨果奖获奖作品《北京折叠》)',21.90)")
cur.execute("INSERT INTO book VALUES(8,'世界知名企业员工指定培训教材:所谓情商高,就是会说话',22.00)")

# 批量插入数据
books = (
    (9, '人间草木', 30.00),
    (10,'你的善良必须有点锋芒', 20.50),
    (11, '这么慢,那么美', 24.80),
    (12, '考拉小巫的英语学习日记:写给为梦想而奋斗的人(全新修订版)', 23.90)
)
# 问号为占位符,用books进行填充
cur.executemany("INSERT INTO book VALUES(?, ?, ?)", books)

# 提交操作
conn.commit()

# 查询操作
cur.execute('SELECT * FROM book')
# 接收全部返回结果行
rows = cur.fetchall()

# 通过索引号访问
for row in rows:
    print('序号: {}, 书名: {}, 价格: {}'.format(row[0], row[1], row[2]))

运行结果:
在这里插入图片描述

# 查询操作(通过列名形式访问)
conn.row_factory = sqlite3.Row
cur = conn.cursor() 
cur.execute('SELECT * FROM book')
rows = cur.fetchall()

# 通过列名访问
for row in rows:
    print('序号: {}, 书名: {}, 价格: {}'.format(row['id'], row['name'], row['price']))
    
#关闭连接
conn.close()

执行结果:
在这里插入图片描述

其他常用数据库:
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sweeney Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值