Python-sqlite3 常用总结

Python 关于sqlite3的简单学习和总结

  • SQLite 是一个小型嵌入式 SQL 数据库引擎。与大多数其他 SQL 数据库不同,SQLite 没有单独的服务器进程。SQLite 直接读写普通磁盘文件。具有多个表、索引、触发器和视图,完整 SQL 数据库包含在单个磁盘文件中。在小型应用软件开发中经常使用该数据库便于快速开发项目,由于其轻量级特性,操作简单因此应用广泛。
  • 由于项目中需要使用持久化存储数据应用到sqlite3,本人在学习之余,总结记录了一些学习笔记,便于日后归纳总结建立完整的知识体系。
  • demo中将sqlite 的简单操作封装到类里,重点在于学习SQL的语句。
#-*- coding=utf-8 -*-
import sqlite3

class sqltest:
    def __init__(self,path):
        self.dbpath = path
        self.cnn = sqlite3.connect(path)
        self.cursor = self.cnn.cursor()

    def sqlcmd(self,cmdline):
        return self.cursor.execute(cmdline)

    def commit(self):
        self.cnn.commit()
    def rollback(self):
        self.cnn.rollback()

    def close(self):
        self.cursor.close()
        self.cnn.close()

    def connect_test(path):
        return sqlite3.connect(path)

    def fetch(self):
        return self.cursor.fetchone()
    
    def fetchAll(self):
        return self.cursor.fetchall()

if __name__ == '__main__':


    print("---------开始----------")
    #数据库文件地址
    DBPATH = r'D:\demo_test\sql_test\sqldb.db'
    #当数据库不存在时,会新建数据库
    cnn = sqltest(DBPATH)
    #sqlline = 'create table if not exists table1(name string primary key,age int,sex string)'
    sqlline = 'create table if not exists %s'%('table1')+'(name string primary key,age int,sex string)'
    
    
    #创建表
    cnn.sqlcmd(sqlline)
    #插入3个数据
    cnn.sqlcmd("insert into table1 values('kangkang',20,'man')")
    cnn.sqlcmd("insert into table1 values('mike',22,'man')")
    cnn.sqlcmd("insert into table1 values('jane',18,'woman')")
    #提交数据到数据库
    cnn.commit()
    #查询mike
    cnn.sqlcmd("select * from table1 where name == 'mike'")
    tb = cnn.fetchAll()
    print("查询:",tb)
    
    #修改mike的性别
    cnn.sqlcmd("update table1 set age = 20 where name == 'mike'")
    cnn.commit()
    cnn.sqlcmd("select * from table1 where name == 'mike'")
    tb = cnn.fetchAll()
    print("修改:",tb)

    #回滚
    cnn.rollback()
    cnn.sqlcmd("select * from table1 where name == 'mike'")
    tb = cnn.fetchAll()
    print("回滚:",tb)

    #删除掉mike
    cnn.sqlcmd("delete from table1 where name == 'mike'")
    cnn.commit()
    cnn.sqlcmd("select * from table1 where name == 'mike'")
    tb = cnn.fetchAll()
    print("删除:",tb)

    #删除表
    #cnn.sqlcmd("drop table table1")
    cnn.close()

  • 打印输出结果如下
---------开始----------
查询: [('kangkang', 20, 'man'), ('mike', 22, 'man'), ('jane', 18, 'woman')]
修改: [('mike', 20, 'man')]
回滚: [('mike', 20, 'man')]
删除: [('kangkang', 20, 'man'), ('jane', 18, 'woman')]

你可能感兴趣的:(Python-sqlite3 常用总结)