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]))

运行结果:
python数据分析:数据库基本操作(SQLite)_第1张图片

# 查询操作(通过列名形式访问)
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()

执行结果:
python数据分析:数据库基本操作(SQLite)_第2张图片

其他常用数据库:
  • MySQL:

    • 主要面对互联网用户,如建站等。
    • https://dev.mysql.com/doc/connector-python/en/
  • postgreSQL:

    • Django推荐与postgreSQL配合使用
    • psycopg
    • http://initd.org/psycopg/docs/
  • mongod:

    • 分布式数据库
    • https://api.mongodb.com/python/current/installation.html
  • oracl:

    • 适用于各类大、中、小、微机环境。是一种高效、可靠性好的适应高吞吐量的数据库解决方案
    • https://www.oracle.com/technetwork/articles/dsl/python-091105.html

你可能感兴趣的:(Python数据分析)