SQLite是一款轻量级的关系型数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite 3目前已经发布,是目前SQLite最新的版本。
以Anaconda下距离,若想使用SQLite,需要通过pip对sqlite3进行安装,命令行格式为:
pip install sqlite3
在安装成功后,便可通过import sqlite3进行引用
import sqlite3
为了使得代码更加方便调用,在代码中定义了SQL_module类别,从而方便代码的迁移
为了使得数据可以存储,需要设数据库存储的路径以及名称,期命名格式为:路径/XXX.db其中XXX为设置的名称,而后在SQL_module实例化时,名称路径
def __init__(self, path):
self.path = path
设定完路径后,对数据库进行创建,并设定的文件是否为可读写状态,并设置从传入定义的表的名称、以及须定义的数据类型以及名称,具体定义方式参见数据库创建的命令行方法,并对照下述代码将对应的数据传入,或参照文章最后一部分综合代码所定义的格式。
def create(self, table, data_string):
f = open(self.path, "w")
f.close()
self.Connect()
self.query.execute("CREATE TABLE IF NOT EXISTS {} {};".format(table, data_string))
self.sql.commit()
为了方便大家进行操作,在代码中,我们对其进行了封装,方便大家操作,其中table为定义的表名,ID为对应的ID名称,ID_data为ID号或者称其为行号,col_name为对应的列名, col_data为要跟新的数据
def update_data(self, table, ID, ID_data, col_name, col_data):
self.query.execute("UPDATE {} SET {}={} WHERE {}={}".format(table, col_name, col_data,
ID, ID_data))
self.sql.commit()
def delete_data(self, table, ID, ID_data):
self.query.execute("DELETE FROM {} WHERE {}={}".format(table, ID, ID_data))
self.sql.commit()
其中string为要插入数据的名称,具体命名格式参照注释介绍
def Insert_data(self, table, string, data):
# insert_sql = "insert into _test_ (name,city) values (?,?)" #?为占位符
# execute(insert_sql,('Tom','New York'))
# "insert into _test_ ('{}') values ('{}')".format(cname , strl[i])
# sql = ''' insert into students (name, username, id) values (:st_name:st_username,:id_num)'''
# execute(sql,{'st_name':name, 'st_username':username, 'id_num':id_num})
self.query.execute("insert into {} {} values {}".format(table, string, data))
self.sql.commit()
此处查找必须使用ID号进行查找,date_name为定义的ID名称,data为定义的ID号。
def find(self, table, data_name, data):
list = self.query.execute("SELECT * from {} WHERE {}={}".format(table, data_name,data))
list = list.fetchall()
return list[0]
为了防止运行过程中数据库出现异常情况,因此,此处提供了复位接口,从而解决出现的异常情况
def Reset(self, table):
# self.query.execute("DROP TABLE %s" % table)
self.query.execute("DROP TABLE {}".format(table))
self.sql.commit()
def Rename(self,table, new_table):
self.query.execute("alter table {} rename to {};".format(table, new_table))
self.sql.commit()
为了方便使用代码中未定义的命令行方法。,此处,定义了数据库命令行操作的接口,方便进行其他操作
def self_CMD(self, string):
self.query.execute(string)
self.sql.commit()
断开操作
def disconnect(self):
self.query.close()
连接操作
def Connect(self):
self.sql = sqlite3.connect(self.path)
self.query = self.sql.cursor()
import sqlite3
class SQL_module():
def __init__(self, path):
self.path = path
def create(self, table, data_string):
f = open(self.path, "w")
f.close()
self.Connect()
self.query.execute("CREATE TABLE IF NOT EXISTS {} {};".format(table, data_string))
self.sql.commit()
def update_data(self, table, ID, ID_data, col_name, col_data):
self.query.execute("UPDATE {} SET {}={} WHERE {}={}".format(table, col_name, col_data, ID, ID_data))
self.sql.commit()
def delete_data(self, table, ID, ID_data):
self.query.execute("DELETE FROM {} WHERE {}={}".format(table, ID, ID_data))
self.sql.commit()
def Insert_data(self, table, string, data):
# insert_sql = "insert into _test_ (name,city) values (?,?)" #?为占位符
# execute(insert_sql,('Tom','New York'))
# "insert into _test_ ('{}') values ('{}')".format(cname , strl[i])
# sql = ''' insert into students (name, username, id) values (:st_name, :st_username, :id_num)'''
# execute(sql,{'st_name':name, 'st_username':username, 'id_num':id_num})
self.query.execute("insert into {} {} values {}".format(table, string, data))
self.sql.commit()
def Reset(self, table):
# self.query.execute("DROP TABLE %s" % table)
self.query.execute("DROP TABLE {}".format(table))
self.sql.commit()
def Rename(self,table, new_table):
self.query.execute("alter table {} rename to {};".format(table, new_table))
self.sql.commit()
def self_CMD(self, string):
self.query.execute(string)
self.sql.commit()
def find(self, table, data_name, data):
list = self.query.execute("SELECT * from {} WHERE {}={}".format(table, data_name, data))
list = list.fetchall()
return list[0]
def disconnect(self):
self.query.close()
def Connect(self):
self.sql = sqlite3.connect(self.path)
self.query = self.sql.cursor()
if __name__ == "__main__":
SQL = SQL_module("./test.db")
table = "table1"
SQL.create(table, "(ID INT PRIMARY KEY,NAME TEXT,AGE INT,ADDRESS CHAR(50),SALARY REAL)")
SQL.Insert_data(table, "(ID,NAME,AGE,ADDRESS,SALARY)", "(1, 'Paul', 32, 'California', 20000.00 )")
SQL.Insert_data(table, "(ID,NAME,AGE,ADDRESS,SALARY)", "(2, 'Allen', 25, 'Texas', 15000.00)")
SQL.Insert_data(table, "(ID,NAME,AGE,ADDRESS,SALARY)", "(3, 'Teddy', 23, 'Norway', 20000.00)")
# 此处查找必须使用ID
data = SQL.find(table, "ID", 1)
print(data[1])
SQL.update_data(table, "ID", 2, "(ID,NAME,AGE,ADDRESS,SALARY)", (2, 'XiaoMing', 25, 'Texas', 15000.00))
SQL.delete_data(table, "ID", 3)
new_table = "table2"
SQL.Rename(table, new_table)