这里写自定义目录标题
##仅实现SELECT UPDATE DELETE 功能。表及文件。目录就是当前目录
#encoding=utf-8
import os
def file_exists(filename):
fileex = os.path.exists(filename)
return fileex
def SELECT_TABLE_TITLE(table):
with open(table,“rt”,encoding=“utf-8”) as title:
filetitle = title.readline()
return filetitle
def WHERE_PARS(WHEREDICT):
WHERELIST = []
WHERELIST_ALL = []
for item in WHEREDICT:
if item != “and” and item != “or”:
WHERELIST.append(item)
else:
WHERELIST_ALL.append(WHERELIST)
WHERELIST_ALL.append(item)
WHERELIST = []
WHERELIST_ALL.append(WHERELIST)
return WHERELIST_ALL
def PARS(SQL_L,parsdict):
for item in SQL_L:
if item.lower() in parsdict:
key = item.lower()
# print(key)
continue
else:
# print(key)
parsdict.get(key).append(item)
if parsdict.get(“from”) == [] or not file_exists(parsdict.get(“from”)[0]+".txt"):
print(“SQL语句错误在from处,表不存在”)
return
if parsdict.get(“where”) != []:
WHERELIST_ALL = WHERE_PARS(parsdict.get(“where”))
parsdict[“where”] = WHERELIST_ALL
if list(parsdict.keys())[0] == “update”:
if parsdict.get(“set”) == []:
print(“set设置错误”)
return
else:
SETLIST_ALL = WHERE_PARS(parsdict.get(“set”))
parsdict[“set”] = SETLIST_ALL
return parsdict
def WHERE_ACTION(WHERELIST,linedict):
reslist = []
for item in WHERELIST:
if type(item) is list:
if item[0] in linedict:
if item1 == ‘=’:
if linedict.get(item[0]) == item2:
reslist.append(“True”)
else:
reslist.append(“False”)
elif item1 == ‘like’:
if item2 in linedict.get(item[0]):
reslist.append(“True”)
else:
reslist.append(“False”)
else:
return “error”
else:
return “error”
elif item == “or” or item == “and”:
reslist.append(item)
else:
return “error”
res = eval(" ".join(reslist))
return res
def opentable(filename):
filetable = open(filename+".txt",“rt”,encoding=“utf-8”)
return filetable
def limitfile(file):
limit = 0
for l in file:
limit += 1
return limit
def limitpart(limit):
try:
return int(limit[0])
except:
print(“limit输入有误”)
return
def writetable(filename):
file = open(filename+"_new.txt",“wt”,encoding=“utf-8”)
return file
def write_file(valuedict,writefile):
writelist = list(valuedict.values())
writestr = “”
for w in writelist:
if writelist.index(w) == len(writelist) - 1:
writestr += w + “\n”
else:
writestr += w + " "
writefile.write(writestr)
def delete(SQL,parsdict):
DELETEDICT = PARS(SQL_L=SQL.split(),parsdict=parsdict)
if DELETEDICT == None:
return
filetable = opentable(DELETEDICT.get(“from”)[0])
writefile = writetable(DELETEDICT.get(“from”)[0])
limit = limitfile(filetable)
filetable.seek(0)
title = filetable.readline()
titlelist = title.split()
writefile.write(title)
if DELETEDICT.get(“limit”) != []:
limit = limitpart(DELETEDICT.get(“limit”))
if limit == None:
return
count = 0
while True:
fileline = filetable.readline()
if fileline == “”:
break
if count >= limit:
writefile.write(fileline)
continue
filelinelist = fileline.split()
namedict = dict(list(zip(titlelist, filelinelist)))
if DELETEDICT.get(“where”) == []:
break
else:
RES = WHERE_ACTION(DELETEDICT.get(“where”), namedict)
if RES == True:
count += 1
continue
else:
writefile.write(fileline)
filetable.close()
writefile.close()
os.remove(DELETEDICT.get(“from”)[0]+".txt")
os.rename(DELETEDICT.get(“from”)[0]+"_new.txt",DELETEDICT.get(“from”)[0]+".txt")
def select(SQL,parsdict):
SELECTDICT = PARS(SQL_L=SQL.split(),parsdict=parsdict)
if SELECTDICT == None:
return
filetable = opentable(SELECTDICT.get(“from”)[0])
limit = limitfile(filetable)
filetable.seek(0)
title = filetable.readline().split()
if SELECTDICT.get(“select”)[0] != “*”:
selectname = SELECTDICT.get(“select”)[0].split(",")
for item in selectname:
if item not in title:
print(“查找的列不存在”)
return
else:
selectname = title
if SELECTDICT.get(“limit”) != []:
limit = limitpart(SELECTDICT.get(“limit”))
if limit == None:
return
count = 0
while True:
filetableread = filetable.readline()
linelist = filetableread.split()
namedict = dict(list(zip(title,linelist)))
if filetableread == “”:
break
if SELECTDICT.get(“where”) == []:
if count >= limit:
break
for j in selectname:
print(namedict.get(j), end="" + " “)
print(”")
count += 1
else:
if count >= limit:
break
RES = WHERE_ACTION(SELECTDICT.get(“where”),namedict)
if RES == True:
for j in selectname:
print(namedict.get(j), end="" + " “)
print(”")
count += 1
filetable.close()
def update(SQL,parsdict):
UPDATEDICT = PARS(SQL_L=SQL.split(), parsdict=parsdict)
if UPDATEDICT == None:
return
filetable = opentable(UPDATEDICT.get(“from”)[0])
writefile = writetable(UPDATEDICT.get(“from”)[0])
limit = limitfile(filetable)
filetable.seek(0)
title = filetable.readline()
titlelist = title.split()
writefile.write(title)
if UPDATEDICT.get(“limit”) != []:
limit = limitpart(UPDATEDICT.get(“limit”))
if limit == None:
return
count = 0
while True:
fileline = filetable.readline()
linelist = fileline.split()
namedict = dict(list(zip(titlelist, linelist)))
if fileline == “”:
break
if UPDATEDICT.get(“where”) == []:
for item in UPDATEDICT.get(“set”):
if type(item) is list:
try:
namedict[item[0]] = item2
except:
print(“更新的列不存在”)
writefile.close()
os.remove(writefile)
filetable.close()
write_file(namedict,writefile)
else:
RES = WHERE_ACTION(UPDATEDICT.get(“where”), namedict)
if RES == True:
for item in UPDATEDICT.get("set"):
if type(item) is list:
try:
namedict[item[0]] = item[2]
except:
print("更新的列不存在")
writefile.close()
os.remove(writefile)
filetable.close()
return
write_file(namedict,writefile)
else:
writefile.write(fileline)
writefile.close()
filetable.close()
os.remove(UPDATEDICT.get("from")[0]+".txt")
os.rename(UPDATEDICT.get("from")[0]+"_new.txt",UPDATEDICT.get("from")[0]+".txt")
def main():
while True:
parsdict = {“select”: {“select”: [],
“from”: [],
“where”: [],
“limit”: []},
“delete”: {“delete”:[],
“from”: [],
“where”: [],
“limit”: []},
“update”:{“update”:[],
“set”:[],
“from”:[],
“where”:[],
“limit”:[]}
}
SQL = input("请输入SQL语句:").strip()
if SQL.split()[0].upper() == "SELECT":
select(SQL,parsdict.get(SQL.split()[0].lower()))
elif SQL.split()[0].upper() == "DELETE":
delete(SQL, parsdict.get(SQL.split()[0].lower()))
elif SQL.split()[0].upper() == "UPDATE":
update(SQL, parsdict.get(SQL.split()[0].lower()))
main()
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。