Sqlite—Python接口

时间:2022-05-09 06:03:39

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import sqlite3,os,time
import traceback

class Sqlite():
    db_file = None     # 数据库文件
    connection = None  # 数据库连接对象
    
    def __init__(self):
        self.db_file = "/www/wwwroot/ding-server/db/test.db"

	# 获取数据库对象
    def GetConn(self):
        try:
            if self.connection == None:
                self.connection = sqlite3.connect(self.db_file)
                self.connection.text_factory = str
        except Exception as ex:
            traceback.print_exc()
            return "error: "   str(ex)

    # 增加任务
    def insert(self, sql):
    	self.write_lock()
    	self.GetConn()
        self.connection.text_factory = str
        try:
            result = self.connection.execute(sql)
            id = result.lastrowid
            self.connection.commit()
            self.rm_lock()
            return id
        except Exception as ex:
            return "error: "   str(ex)
          
    # 删除任务  
    def delete(self, sql):
    	self.write_lock()
    	self.GetConn()
    	try:
            result = self.connection.execute(sql)
            self.connection.commit()
            self.rm_lock()
            return result.rowcount
        except Exception as ex:
            return "error: "   str(ex)
            
    # 修改任务状态(完成/未完成)        
    def update(self, sql):
    	self.GetConn()
    	try:
            result = self.connection.execute(sql)
            self.connection.commit()
            return result.rowcount
        except Exception as ex:
            return "error: "   str(ex)
            
    # 查询任务
    def select(self, sql):
    	self.GetConn()
    	result = self.connection.execute(sql)
        data = result.fetchall()
        tmp = list(map(list,data))   # 元组转成列表
        data = tmp
        return data
        
    # 方式1:创建数据表
    def create(self):
    	self.GetConn()
    	sql = ‘‘‘create table if not exists tb_user(
    	          ID INT PRIMARY KEY     NOT NULL,
                  NAME           TEXT    NOT NULL,
                  AGE            INT     NOT NULL,
                  ADDRESS        CHAR(50),
                  SALARY         REAL);‘‘‘
        try:
    		self.connection.execute(sql)
    		self.connection.commit()
    		self.connection.close()
        except Exception as ex:
            traceback.print_exc()
            return "error: "   str(ex)
    
    # 方式2:创建数据表
    def create_back(self):
        self.GetConn()
        try:
            fr = open(‘/www/wwwroot/ding-server/db/task.sql‘, ‘rb‘)
            result = self.connection.executescript(fr.read())
            fr.close()
            self.connection.commit()
            return True
        except Exception as ex:
        	traceback.print_exc()
        	return False
        	
    def writeFile(self,filename,s_body,mode=‘w ‘):
		try:
			fp = open(filename, mode);
			fp.write(s_body)
			fp.close()
			return True
		except:
			try:
				fp = open(filename, mode,encoding="utf-8");
				fp.write(s_body)
				fp.close()
				return True
			except:
				return False
    	
    # 是否有锁
    def is_lock(self):
        n = 0
        while os.path.exists(self.__LOCK):
            n =1
            if n > 50:
                self.rm_lock()
                break
            time.sleep(0.01)
            
    # 写锁
    def write_lock(self):
        self.is_lock()
        self.writeFile(self.__LOCK,"True")
        
    # 解锁
    def rm_lock(self):
        if os.path.exists(self.__LOCK):
            os.remove(self.__LOCK)
        	
        	
if __name__ == ‘__main__‘:
    obj = Sqlite()
    # obj.GetConn()    # 获取数据库连接,没有的话,就创建数据库
    obj.create()

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

参考:https://www.jianshu.com/p/5ff30df3ba6b