博客动态
Hi!欢迎来到Jerry Coding!公众号垃圾分类增加学习功能,关注下面的公众号一起来帮助Jerry学习更多垃圾分类知识吧!
微信扫码

扫一扫关注我

More
关于
New
RSS

Python操作sqlite3数据库 增删改查

2019年5月14日 Jerry 1681 2019年7月9日

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

运行显示如下:

四、修改数据

# 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()

五、删除数据

# 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()

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,这些网上都可以轻松下载到,各位可以使用下。


原创文章,转载请注明出处: https://jerrycoding.com/article/sqlite3

微信
支付宝

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论

每日一句 (From ONE)
有一些文字,它们使人能够生活,那是一些纯洁、天真的字。比如“热”,比如“信任”,“爱”,“正义”和“自由”。
微信扫码

扫一扫关注我

关于本站