数据分析利器Python——数据库 *** 作(以SQLite为例)

数据分析利器Python——数据库 *** 作(以SQLite为例),第1张

文章目录
    • 一、定义
    • 二、基本 *** 作
      • *** 作举例
    • 三、多表连接

一、定义

以一定方式存储,可以多个用户共享,具有尽可能小的冗余度,与应用程序彼此独立的数据集合。

二、基本 *** 作

关于数据库的常用 *** 作我们之前已经讲过,此处只讲使用Python *** 作数据库的步骤。
连接数据库
conn = sqlite3.connect(db_name)

  • 如果db_name存在,读取数据库
  • 如果db_name不存在,则新建数据库

获取游标

  • conn.cursor()
  • 用于执行SQL语句
  • 一段私有的SQL工作区,用于暂时存放受SQL语句影响的数据

具体 *** 作

  • cursor.execute(sql_str)
  • cursor.executemany(sql_str)批量 *** 作

获取单条记录:fetchone()
获取多条记录:fetchall()
提交 *** 作:conn.commit()
关闭连接:conn.close()

*** 作举例
import sqlite3
db_path = '../files/test.db' # 如果不存在则会新创建一个
conn = sqlite3.connect(db_path) # 连接数据库
cur = conn.cursor() # 获取游标
cur.execute("select name from sqlite_master where type = 'table';").fetchall() # 获取当前数据库的所有表
cur.execute("create table book(id int,name text,price double);") # 创建表
cur.execute("INSERT INTO book VALUES(1,'肖秀荣考研书系列:肖秀荣(2022)考研政治命题人终极预测8套卷',24.40);")
cur.execute("INSERT INTO book VALUES(2,'法医秦明作品集',100.00);")
cur.execute("INSERT INTO book VALUES(3,'活着本来单纯:丰子恺散文漫画精品集',30.90);")
cur.execute("select * from book;").fetchall() # 获取表中所有字段,必须加fetchall()
cur.execute("pragma table_info(book);").fetchall() # 获取字段信息,结果如下。
'''
[(0, 'id', 'int', 0, None, 0),
 (1, 'name', 'text', 0, None, 0),
 (2, 'price', 'double', 0, None, 0)]
'''
# 批量插入
more_books = (
    (9, '人间草木', 30.00),
    (10,'你的善良必须有点锋芒', 20.50),
    (11, '这么慢,那么美', 24.80),
    (12, '考拉小巫的英语学习日记:写给为梦想而奋斗的人(全新修订版)', 23.90)
)
cur.executemany("INSERT INTO book VALUES(?, ?, ?)", more_books)
conn.commit() # 提交 *** 作
cur.close() # 关闭连接

如果想要返回详细信息,必须在语句后加fetchone或fetchall。

三、多表连接

大部分SQL语句是通用的,但需要注意的是,SQLite中不支持右连接

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/787090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存