啥都别说了就是高兴,明天再继续实现!!(小部分功能实现)
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)