SQLite,是一款轻型的数据库,占用资源非常的低。这里记录下对sqlite3的增删改查相关操作,顺便复习一下SQL语句- -。

一、创建数据库

连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。

# coding: UTF-8

import sqlite3

conn = sqlite3.connect('jerrycoding.db')

print ("打开数据库成功!")

二、创建数据表

创建一个学生表,里面有三个字段:姓名、年龄、性别,数据类型分别为varchar, int, char:

# coding: UTF-8

import sqlite3

conn = sqlite3.connect('jerrycoding.db')

print ("打开数据库成功!")

cur = conn.cursor()

cur.execute('''CREATE TABLE Student_sheet

(Name varchar(255),

Age int,

Sex char);''')

print ("创建学生表成功!")

conn.commit() #数据库存储在硬盘上需要commit 存储在内存中的数据库不需要

conn.close()

#当表已经存在时,反复创建会报错,这时候可以使用下面的SQL语句

# '''CREATE TABLE IF NOT EXISTS Student_sheet(Name varchar(255), Age int, Sex char);'''

三、插入数据和查询数据

# coding: UTF-8

import sqlite3

conn = sqlite3.connect('jerrycoding.db')

print ("打开数据库成功!")

cur = conn.cursor()

cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('Jerry', 20, 'M')")

cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('小哥', 18, 'M')")

cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('小妹', 29, 'F')")

conn.commit()

print ("插入数据成功!")

print ("打印学生表如下:")

cursor = cur.execute('SELECT * FROM Student_sheet')

for i in cursor:

print(i[0], i[1], i[2])

conn.close()

运行显示如下:

f57b256ae3be830ff669827d2f0d53ef.png

四、修改数据

# coding: UTF-8

import sqlite3

conn = sqlite3.connect('jerrycoding.db')

print ("打开数据库成功!")

cur = conn.cursor()

cur.execute("UPDATE Student_sheet SET Age = 99 WHERE Name='Jerry'")

conn.commit()

print ("修改Jerry年龄数据成功!")

print ("打印学生表如下:")

cursor = cur.execute('SELECT * FROM Student_sheet')

for i in cursor:

print(i[0], i[1], i[2])

conn.close()

2af7d0b8c36090c68cc459846a2b1a76.png

五、删除数据

# coding: UTF-8

import sqlite3

conn = sqlite3.connect('jerrycoding.db')

print ("打开数据库成功!")

cur = conn.cursor()

cur.execute("DELETE FROM Student_sheet WHERE Name='Jerry'")

conn.commit()

print ("删除Jerry数据成功!")

print ("打印学生表如下:")

cursor = cur.execute('SELECT * FROM Student_sheet')

for i in cursor:

print(i[0], i[1], i[2])

conn.close()

25caebb4e86b73e79cdb5f672f8a52dd.png

API 总结

sqlite3.connect(database [,timeout ,other optional arguments])

打开一个到 SQLite 数据库文件 database 的链接。您可以使用 ":memory:" 来在 RAM 中打开一个到 database 的数据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。

connection.cursor([cursorClass])

创建一个 cursor

cursor.execute(sql [, optional parameters])

执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问好和命名占位符(命名样式)。

例如:cursor.execute("insert into people values (?, ?)", (who, age))

connection.execute(sql [, optional parameters])

该例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。

cursor.executemany(sql, seq_of_parameters)

该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。

connection.executemany(sql[, parameters])

该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法。

cursor.executescript(sql_script)

该例程一旦接收到脚本,会执行多个 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号(;)分隔。

connection.executescript(sql_script)

该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法。

connection.total_changes()

该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。

connection.commit()

该方法提交当前的食物。如果您未调用该方法,那么自您上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。

connection.rollback()

该方法回滚自上一次调用 commit() 以来对数据库所做的更改。

connection.close()

该方法关闭数据库连接。请注意,这不会自动调用 commit()。如果您之前未调用 commit() 方法,就直接关闭数据库连接,您所做的所有更改将全部丢失!

cursor.fetchone()

该方法获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None。

cursor.fetchmany([size=cursor.arraysize])

该方法获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。该方法尝试获取由 size 参数指定的尽可能多的行。

cursor.fetchall()

该例程获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表

Sqlite 的可视化软件:

有许多方便快捷的Sqlite的可视化软件,推荐 SqliteStudio和 SqliteSpy,这些网上都可以轻松下载到,各位可以使用下。

Logo

一站式 AI 云服务平台

更多推荐