將Python class變成簡單的SQL語句

起因是要拼裝一個insert語句,然後字段又特別多,超過了50個,於是寫了一個簡單的方法,傳入一個對象,根據這個對象的類class,找出所有可公開訪問的int、float、str變量名及變量值,合成一條insert語句。

def genInsertSqlByClass(obj: object, tableName: str)->str:
    '''
    傳一個對象、需要插入的表名
    :param obj: 對象
    :param tableName: 表單名稱
    :return: 組裝好的sql insert語句
    '''
    p1 = 'insert into `' + tableName + '`'
    p2 = ''
    p3 = ''
    rlk = []

    # 從對象obj中獲取所有成員變量名
    for i in obj.__dir__():
        if i.find('_', 0, 1) == -1:
            rlk.append(i)

    # 遍歷所有成員變量,如果值不是方法的,則加到sql語句中,注意這裏只添加了int、float、str三種類型,如需識別date日期或時間還需再改進。
    for k in range(len(rlk)):
        v = obj.__getattribute__(rlk[k])
        if callable(v) == False:
            p2 = p2 + '`' + rlk[k] + '`'
            if isinstance(v, int) or isinstance(v, float):
                p3 = p3 + str(v)
            elif isinstance(v, str):
                p3 = p3 + '\'' + v.replace("'", "\\'") + '\''
            p2 = p2 + ','
            p3 = p3 + ','

    # 去掉最後一個逗號
    p2 = p2[:len(p2) - 1]
    p3 = p3[:len(p3) - 1]

    # 合成sql語句
    sql = p1 + ' (' + p2 + ') values ' + '(' + p3 + ')'
    print(sql)
    return sql
發佈了17 篇原創文章 · 獲贊 20 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章