33

原来Python自带了数据库,用起来真方便!

 3 years ago
source link: http://developer.51cto.com/art/202008/624601.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python作为数据科学主流语言,被广泛用于数据读存、处理、分析、建模,可以说是无所不能。

数据一般存放在本地文件或者数据库里,之前介绍过如何使用python读取本地文件,也对# PyMySQL、cx_Oracle等数据库连接库做过简单的使用分享。

教你使用Python玩转MySQL数据库,大数据导入不再是难题!

干货!python与MySQL数据库的交互实战

这次推荐一个python自带的轻量级数据库模块-sqlite3,先要弄清楚什么是SQLite:

SQLite是一种用C写的小巧的嵌入式数据库,它的数据库就是一个文件。SQLite 不需要一个单独的服务器进程或操作的系统,不需要配置,这意味着不需要安装或管理,所有的维护都来自于SQLite 软件本身。

sqlite3模块不同于PyMySQL模块,PyMySQL是一个python与mysql的沟通管道,需要你在本地安装配置好mysql才能使用,而SQLite是python自带的数据库,不需要任何配置,使用sqlite3模块就可以驱动它。

本文我们将进行连接 SQLite数据库、创建表、插入数据、读取数据、修改数据等操作。

1. 导入sqlite3模块sqlite3是内置模块,所以不需要安装的,直接import导入即可:

import sqlite3

2. 创建与SQLite数据库的连接使用sqlite3.connect()函数连接数据库,返回一个Connection对象,我们就是通过这个对象与数据库进行交互。数据库文件的格式是filename.db,如果该数据库文件不存在,那么它会被自动创建。该数据库文件是放在电脑硬盘里的,你可以自定义路径,后续操作产生的所有数据都会保存在该文件中。

# 创建与数据库的连接conn = sqlite3.connect('test.db')

还可以在内存中创建数据库,只要输入特殊参数值:memory:即可,该数据库只存在于内存中,不会生成本地数据库文件。

conn = sqlite3.connect(':memory:')

建立与数据库的连接后,需要创建一个游标cursor对象,该对象的.execute()方法可以执行sql命令,让我们能够进行数据操作。

#创建一个游标 cursorcur = conn.cursor()

3. 在SQLite数据库中创建表这里就要执行sql的建表语句了,我们先创建一张如下的学生成绩表-scores:

该表目前只有字段名和数据类型,没有数据,执行以下语句实现:

# 建表的sql语句sql_text_1 = '''CREATE TABLE scores (姓名 TEXT, 班级 TEXT, 性别 TEXT, 语文 NUMBER, 数学 NUMBER, 英语 NUMBER);'''# 执行sql语句cur.execute(sql_text_1)

4. 向表中插入数据建完表-scores之后,只有表的骨架,这时候需要向表中插入数据:

执行以下语句插入单条数据:

# 插入单条数据sql_text_2 = "INSERT INTO scores VALUES('A', '一班', '男', 96, 94, 98)"cur.execute(sql_text_2)

执行以下语句插入多条数据:

data = [('B', '一班', '女', 78, 87, 85), ('C', '一班', '男', 98, 84, 90), ]cur.executemany('INSERT INTO scores VALUES (?,?,?,?,?,?)', data)# 连接完数据库并不会自动提交,所以需要手动 commit 你的改动conn.commit()

5. 查询数据我们已经建好表,并且插入了三条数据,现在来查询特定条件下的数据:

# 查询数学成绩大于90分的学生sql_text_3 = "SELECT * FROM scores WHERE 数学>90"cur.execute(sql_text_3)# 获取查询结果cur.fetchall()

返回:

备注:获取查询结果一般可用.fetchone()方法(获取第一条),或者用.fetchall()方法(获取所有条)。

6. 其他操作对数据库做改动后(比如建表、插数等),都需要手动提交改动,否则无法将数据保存到数据库。

# 提交改动的方法conn.commit()

使用完数据库之后,需要关闭游标和连接:

# 关闭游标cur.close()# 关闭连接conn.close()

附连接connection和游标cursor的API方法:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK