中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python實現sqlite3增刪改查的封裝

發布時間:2021-12-03 15:05:25 來源:億速云 閱讀:375 作者:iii 欄目:開發技術

本篇內容介紹了“怎么用Python實現sqlite3增刪改查的封裝”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

開發背景:

每次項目都要寫數據庫、煩死了。。然后就每次數據庫都要花很多時間。煩死了!不如寫個通用的增刪查改,以不變應萬變!

特性:

  • 搭建通用增刪查改模塊,減少代碼量。

  • 讓代碼更加清晰、可讀

  • 即便進行了封裝,也絲毫不影響其靈活性

sqlite3我也就不多介紹了,直接上代碼。附上相關使用方法和測試用例!

使用方法

import sqlite3

'''寫一個類打包成庫,通用于儲存信息的sqlite'''
'''函數返回值可優化'''
'''使用:使用'''
'''說明:1、單例模式連接數據庫:避免數據庫connect過多導致數據庫down
        2、根據數據庫增刪查改性能對比,統一使用execute進行常規數據庫操作
        3、且不做try操作:1、影響性能 2、若報錯,外部調用無法確定問題所在,'''

class LiteDb(object):
    _instance = None

    def __new__(cls, *args, **kw):
        if cls._instance is None:
            cls._instance = object.__new__(cls)
        return cls._instance

    def openDb(self, dbname):
        self.dbname = dbname
        self.conn = sqlite3.connect(self.dbname)
        self.cursor = self.conn.cursor()

    def closeDb(self):
        '''
        關閉數據庫
        :return:
        '''
        self.cursor.close()
        self.conn.close()

    def createTables(self, sql):
        '''
        example:'create table userinfo(name text, email text)'
        :return: result=[1,None]  
        '''
        self.cursor.execute(sql)
        self.conn.commit()
        result = [1, None]
        return result

    def dropTables(self, sql):
        '''
        example:'drop table userinfo'
        :param sql:
        :return:result=[1,None]
        '''
        self.cursor.execute(sql)
        self.conn.commit()
        result = [1, None]
        return result

    def executeSql(self, sql, value=None):
        '''
        執行單個sql語句,只需要傳入sql語句和值便可
        :param sql:'insert into user(name,password,number,status) values(?,?,?,?)'
                    'delete from user where name=?'
                    'updata user set status=? where name=?'
                    'select * from user where id=%s'
        :param value:[(123456,123456,123456,123456),(123,123,123,123)]
                value:'123456'
                value:(123,123)
        :return:result=[1,None]
        '''

        '''增、刪、查、改'''
        if isinstance(value,list) and isinstance(value[0],(list,tuple)):
            for valu in value:
                self.cursor.execute(sql, valu)
            else:
                self.conn.commit()
                result = [1, self.cursor.fetchall()]
        else:
            '''執行單條語句:字符串、整型、數組'''
            if value:
                self.cursor.execute(sql, value)
            else:
                self.cursor.execute(sql)
            self.conn.commit()
            result = [1, self.cursor.fetchall()]
        return result

測試用例

from dbUse import LiteDb

'''對于二次封裝的數據庫進行測試'''
'''增刪查改'''

#用例
'''
select name from sqlite_master where type='table
select * from user
'select * from user where id = %s'%7
select * from user where id = ? , 7
select * from user where id=? or id=?, ['7','8']

insert  into user(id) values(7)
'insert  into user(id) values(%s)'%7
'insert  into user(id) values(?)',[('10',),('11',)]

delete from user where id=7
'delete from user where id=%s'%7
'delete from user where id=?',[('10',),('11',)]

update user set id=7 where id=11
'update user set id=%s where id=%s'%(10,20)
'update user set id=? where id=?',[('21','11'),('20','10')]'''


db=LiteDb()
db.openDb('user.db')

def close():
    db.closeDb()

def createTables():
    result=db.createTables('create table if not exists user(id varchar(128))')

def executeSQL():
    '''增刪查改'''
    result = db.executeSql('insert  into user(id) values(?)',('99',))
    result = db.executeSql('select * from user ')

executeSQL()
close()

Python參數傳遞方式

Python的參數傳遞一共有以下五種(位置參數、默認參數、變長參數、關鍵字參數、命名關鍵字參數)

位置傳遞,即參數按照定義的位置及順序進行傳遞,如下所示:

# 位置傳遞實例:
def fun1(a, b, c):
    return a + b + c
print(fun1(1, 2, 3))

關鍵字傳遞,即通過傳遞的參數的名稱進行識別。

# 關鍵字傳遞
def fun2(a, b, c):
   return a + b + c
print(fun2(1, c=3, b=2))

默認值參數傳遞,即給某些參數設置一個默認值,如果不傳則讀取默認值。

# 默認值傳遞
def fun3(a, b=2, c=3):
   return a + b + c
print(fun3(a=1))

元組傳遞,在定義函數時,我們有時候并不知道調用的時候會傳遞多少個參數。元組參數來進行參數傳遞會非常有用。如下所示:

def fun4(*name):
    print(type(name))
    print(name)
fun4((1, 2, 3))

字典傳遞,雖然通過元組可以傳遞多個參數,但如果需要通過鍵值來獲取參數內容時,字典則更加方便,如下所示:

def fun5(a, b, **kwargs):
   print(type(kwargs))  # <class 'dict'>
   print(a, b, kwargs)
fun5(2, 3, name='Alan.hsiang', age=23)

“怎么用Python實現sqlite3增刪改查的封裝”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元阳县| 长海县| 江孜县| 黄山市| 尼玛县| 成都市| 罗山县| 灵宝市| 泗阳县| 平乡县| 三穗县| 榆社县| 合山市| 长海县| 饶平县| 牙克石市| 隆子县| 扬中市| 黔西县| 平谷区| 平乐县| 盐边县| 昌吉市| 饶河县| 潜江市| 开平市| 若尔盖县| 边坝县| 镇宁| 栾城县| 吴堡县| 军事| 叶城县| 西昌市| 梁平县| 鄱阳县| 大安市| 财经| 威远县| 富阳市| 曲麻莱县|