• Sqlite—Python接口


    #!/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

  • 相关阅读:
    将博客搬至CSDN
    defender 月考总结
    生日祝福@陈俊翰
    个性签名
    你这是virus吧?
    (CPSCA's)CPOJC+VIJOS
    Sentence by defender
    工作制一览
    最长上升子序列
    mysql约束
  • 原文地址:https://www.cnblogs.com/liuhaidon/p/12040245.html
Copyright © 2020-2023  润新知