select name where id>1

啥都別說了就是高興,明天再繼續實現!!(小部分功能實現)

sel = input('請輸入查詢信息:')  # select name, age where age>20
se = sel.split('where')
content = se[0].split('select')
con = content[1].split(',')
# print(con,se[1])     # [' name', ' age ']  # age > 20
if '>' in se[1]:
    s = se[1].split('>')
    # print(s)              # [' age', '20']
    f = open('SQL',encoding='utf-8')
    for line in f:
        line = line.strip()  # 讀第一行,去空格
        l = line.split(',')
        # print(l)         # ['id', 'name', 'age', 'phone', 'job']
        for titl in l:
            if titl.strip() == s[0].strip(): # 找到判斷條件的索引
                jj = l.index(titl)       # name 和  age
                for i in range(len(con)):
                    con_one_index = l.index(con[i].strip()) # 找到name的索引   # 1
                    for line2 in f:              # 讀第二行  1,Alex,22,13651054608,IT
                        line2_l = line2.split(',')
                        find1 = line2_l[con_one_index].strip()# 找到了要返回的內容  Alex
                        if int(line2_l[jj]) > int(s[1]):  # 20
                            print(find1)
    f.close()

這纔是low的正版(要求實現):

select  *  where  phone  like  133

select  name,id  where  age > 22

select  *  where  job  =  IT

# 2017-11-3大禮包

# id,name,age,phone,job
# 1,Alex,22,13651054608,IT
# 2,Egon,23,13304320533,Tearcher
# 3,nezha,25,1333235322,IT

# 可以的(雖然只有基礎篇)
sel = input('請輸入查詢信息:')            #  select name,job where age=20
def greater(dxd):
    se = sel.split('where')
    content = se[0].split('select')
    con = content[1].split(',')
    # print(con,se[1])     # [' name', ' age ']  # age > 20
    if dxd in se[1]:
        s = se[1].split(dxd)
        # print(s)              # [' age', '20']
        f = open('SQL', encoding='utf-8')
        for line in f:
            line = line.strip()  # 讀第一行,去空格
            l = line.split(',')
            # print(l)         # ['id', 'name', 'age', 'phone', 'job']
            for titl in l:
                if titl.strip() == s[0].strip():  # 找到判斷條件的索引
                    jj = l.index(titl)  # jj = 2   age
                    if len(con) >= 1 and content[1].strip() != '*':      # 看返回的內容有幾個
                        con_one_index0 = l.index(con[0].strip())
                        if len(con) >= 2:
                            con_one_index1 = l.index(con[1].strip())
                            if len(con) >= 3:
                                con_one_index2 = l.index(con[2].strip())
                                if len(con) >= 4:
                                    con_one_index3 = l.index(con[3].strip())
                    for line2 in f:  # 讀第二行  1,Alex,22,13651054608,IT
                        line2_l = line2.split(',')
                        if content[1].strip() == '*':
                            if dxd == '>':
                                if int(line2_l[jj]) > int(s[1]):
                                    xing = ','.join(line2_l)
                                    print(xing.strip())
                            if dxd == '<':
                                if int(line2_l[jj]) < int(s[1]):
                                    xing = ','.join(line2_l)
                                    print(xing.strip())
                            if dxd == '=':
                                if line2_l[jj].strip() == s[1].strip():
                                    xing = ','.join(line2_l)
                                    print(xing.strip())
                            if dxd == 'like':
                                long = len(s[1].strip())    # 133   3
                                if str(line2_l[jj][0:long].strip()) == s[1].strip():       # ###like
                                    xing = ','.join(line2_l)
                                    print(xing.strip())
                        elif len(con) >= 1:
                            find1 = line2_l[con_one_index0].strip()  # 找到了要返回的內容  Alex
                            if len(con) >= 2:
                                find2 = line2_l[con_one_index1].strip()
                                if len(con) >= 3:
                                    find3 = line2_l[con_one_index2].strip()
                                    if len(con) >= 4:
                                        find4 = line2_l[con_one_index3].strip()
                        if dxd == '>':
                            if int(line2_l[jj]) > int(s[1]):  # 20
                                if len(con) >= 4:
                                    print(find1, find2, find3, find4)
                                elif len(con) >= 3:
                                    print(find1, find2, find3)
                                elif len(con) >= 2:
                                    print(find1, find2)
                                elif len(con) == 1 and content[1].strip() != '*':
                                    print(find1)
                        if dxd == '<':
                            if int(line2_l[jj]) < int(s[1]):  # 20
                                if len(con) >= 4:
                                    print(find1, find2, find3, find4)
                                elif len(con) >= 3:
                                    print(find1, find2, find3)
                                elif len(con) >= 2:
                                    print(find1, find2)
                                elif len(con) == 1 and content[1].strip() != '*':
                                    print(find1)
                        if dxd == '=':
                            if line2_l[jj].strip() == s[1].strip():
                                if len(con) >= 4:
                                    print(find1, find2, find3, find4)
                                elif len(con) >= 3:
                                    print(find1, find2, find3)
                                elif len(con) >= 2:
                                    print(find1, find2)
                                elif len(con) == 1 and content[1].strip() != '*':
                                    print(find1)
                        if dxd == 'like':
                            long = len(s[1].strip())       # 特麼的!!空格太重要了
                            if str(line2_l[jj][0:long].strip()) == s[1].strip():
                                if len(con) >= 4:
                                    print(find1, find2, find3, find4)
                                elif len(con) >= 3:
                                    print(find1, find2, find3)
                                elif len(con) >= 2:
                                    print(find1, find2)
                                elif len(con) == 1 and content[1].strip() != '*':
                                    print(find1)
        f.close()
if '<' in sel:
    dxd = '<'
if '>' in sel:
    dxd = '>'
if '=' in sel:
    dxd = '='
if 'like' in sel:
    dxd = 'like'
greater(dxd)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章