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()
执行结果:
其他常用数据库:
-
MySQL:
- 主要面对互联网用户,如建站等。
- https://dev.mysql.com/doc/connector-python/en/
-
postgreSQL:
- Django推荐与postgreSQL配合使用
- psycopg
- http://initd.org/psycopg/docs/
-
mongod:
-
oracl:
- 适用于各类大、中、小、微机环境。是一种高效、可靠性好的适应高吞吐量的数据库解决方案
- https://www.oracle.com/technetwork/articles/dsl/python-091105.html