Python操作SQLite介绍

Python操作SQLite介绍

 

Python自带Sqlite3数据库。要用Python操作SQLite,不用下载SQLite,只要先import sqlite3后,即可操作SQLite。

SQLite,是一款轻型的数据库,是遵守ACID——原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的关系型数据库管理系统。它占用资源非常的低,因此,常作为嵌入式数据库。

 

Python操作SQLite数据库步骤:

首先第一步是导入sqlite3模块,sqlite3是一个与SQLite交互的库;

import sqlite3

然后需要创建一个访问数据库的连接,比如我们创建一个测试用的数据库,命名为test.db;

conn = sqlite3.connect('./test.db')

现在我们就已经连接到数据库了,然后需要创建游标也就是Cursor;

cursorA = conn.cursor()

通过Cursor执行SQL语句,然后获得执行结果,我们先来创建一个students表;

sql = 'create table students(id int primary key, name varchar(20) not null , age int not null)'

cursorA.execute(sql)  # 创建表的命令

最后一定要记得关闭游标和关闭连接;

cursorA.close()

conn.close()

 

例1建立名为test.db的数据库,在其中建立students,代码内容如下:

#引入sqlite3

import sqlite3

 

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

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

#创建操作的游标

cursorA=conn.cursor()

#创建一个表students 首先判断students这张表是否存在,如果不存在则新建——IF NOT EXISTS

cursorA.execute('''CREATE TABLE IF NOT EXISTS  students

       (ID INT PRIMARY KEY NOT NULL,

       NAME     TEXT  NOT NULL,

       AGE      INT   NOT NULL);''');

print("表创建成功");

#提交事务:

conn.commit()

print("-------------------");

 

#插入数据

cursorA.execute("INSERT INTO sTudents(ID,NAME,AGE) VALUES(1,'Allen',25)")

#cursorA.execute("INSERT INTO sTudents(ID,NAME,AGE) VALUES(2,'Maxsu',20)")

#cursorA.execute("INSERT INTO sTudents(ID,NAME,AGE) VALUES(3,'Teddy',24)")

 

#提交事务:

conn.commit()

 

print("记录插入成功");

# 通过rowcount获得插入的行数:

print('rowcount(一共插入的行数):', cursorA.rowcount)

print("-------------------");

 

#关闭Cursor:

cursorA.close()

#关闭连接

conn.close()

 

#读取表students

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

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

#创建操作的游标

cursorA=conn.cursor()

 

#执行查询语句:

cursorA.execute("SELECT * from students")

#获得查询结果

values = cursorA.fetchall()

print(values)

 

#关闭Cursor:

cursorA.close()

#关闭连接

conn.close()

 

保存文件名为testSqlite.py,运行结果:

 

 

SQLite数据库中一个特殊的表叫 sqlite_master,sqlite_master的结构。

CREATE TABLE sqlite_master (

type TEXT,

name TEXT,

tbl_name TEXT,

rootpage INTEGER,

sql TEXT

);

我们可以通过查询这个表来获取数据库所有的表名:

SELECT name FROM sqlite_master WHERE type='table' ORDER BY name

还可以通过:

PRAGMA  table_info(“表名”)

来获取表结构。

 

例2、查看名为test.db数据库是否含有students,代码内容如下:

 

#引入sqlite3

import sqlite3

try:

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

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

 

    #查看数据库是否含有students表

    cursorA=conn.execute("SELECT name FROM sqlite_master WHERE type='table'");

 

    print("表名")

    print(cursorA.fetchall())

 

    #关闭连接

    conn.close()

except sqlite3.Error as e:

    print(e)

 

保存文件名为Lookuptable.py,运行结果:

 

可以将上例中的print(cursorA.fetchall())改为

for it in cursorA:

      for i in range(len(it)):

           print(it[i],)

      print('\n')

改后代码如下:

#引入sqlite3

import sqlite3

try:

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

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

 

    #查看数据库是否含有students表

    cursorA=conn.execute("SELECT name FROM sqlite_master WHERE type='table'");

 

    print("表名")

    #print(cursorA.fetchall())

    for it in cursorA:

      for i in range(len(it)):

           print(it[i],)

      print('\n')

 

    #关闭连接

    conn.close()

except sqlite3.Error as e:

    print(e)

 

运行结果:

就写到这里吧。

想深入学习可参考,可以参考菜鸟教程之SQLite - Python

https://www.runoob.com/sqlite/sqlite-python.html

 

还可以参看如下好的博文

python中sqlite3对数据库的增删改查

https://blog.csdn.net/liuyanlin610/article/details/76021959

浅谈Python自带数据库SQLite3模块的使用

https://blog.csdn.net/GuoQiZhang/article/details/91344509

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章