啥都別說了就是高興,明天再繼續實現!!(小部分功能實現)
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)