123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import sqlite3
- import Stateful
- deType = "sqlite3"
- dbPath = "dev.db"
- def IsEixist(tableName, columnName):
- pass
- sqls = ""
- Operate_sqlite3()
- def BackPrevious():
- pass
- previousPath = ""
- currentPath = ""
- # [todo 3]
- def Secondary_response():
- pass
- def Operate_sqlite3(dbPath, commands):
- # Commands e.g.
- # 0 1 2 3 4 5 6
- # [add]
- # ['add', 'board', '<KB>']
- # ['add', 'class', '<CL>', 'to', '<KB>']
- # ['add', 'event', '<EV>', 'to', '<KB>', '/', '<CL>'] <- 这个应该报错
- # ['add', 'event', '<EV>', 'to', '<KB>/<CL>']
- # [edit]
- # ['edit', 'board', '<KB>', 'to', '<KB>']
- # ['edit', 'class', '<KB>', 'to', '<KB>']
- # ['edit', 'class', '<CL>', 'to', '<CL>']
- # ['edit', 'class', '<CL>', 'to', '<CL>']
- # ['edit', 'event', '<EV>', 'to', '<EV>']
- # ['edit', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
- # ['edit', 'event', '<EV>', 'in', '<KB>/<CL>']
- # [delete]
- # ['delete', 'board', '<KB>']
- # ['delete', 'class', '<CL>']
- # ['delete', 'event', '<EV>']
- # ['delete', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
- # ['delete', 'event', '<EV>', 'in', '<KB>/<CL>']
- # [move]
- # ['move', 'class', '<CL>', 'to', '<KB>']
- # ['move', 'event', '<EV>', 'to', '<KB>']
- # ['move', 'event', '<EV>', 'to', '<CL>']
- # ['move', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
- # ['move', 'event', '<EV>', 'in', '<KB>/<CL>']
- # [select]
- # ['select', 'board', '<KB>']
- # ['select', 'class', '<CL>']
- # ['select', 'event', '<EV>']
- # ['select', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
- # ['select', 'event', '<EV>', 'in', '<KB>/<CL>']
- # [..]
- # [/]
-
- # [todo 1]
- # 1. 检查commands[5]是否为dbPath, 不是话报错(syntax error)
- # ↑↑↑ 但是总感觉输入检查应该放在Controller里面(也就是放在前端去检查)...
- # 前端检查语法, 冲突代回到后端去检查, 然后顺便就执行了
- # 2. 命令里面的<KB>, <CL>, <EV>都代入检查是否存在, 区分add/edit(INSERT INTO/UPDATE)
- # 3. 匹配SQL关键字
- # 4. 拼完以后进行to和in的判断
- # 5. 按正确的顺序拼SQL语句
- # 6. 执行
- v = "SELECT * FROM {tableName} WHERE name={name}".format(tableName=str(commands[1]).capitalize(), name="'"+commands[2]+"'")
-
- con = sqlite3.connect(dbPath)
- cur = con.cursor()
- # 1. exist check
- try:
- res = cur.execute(v)
- con.commit()
- print("res: ", res.fetchone() is None)
- # syntax right but not exist:
- if res.fetchone() is None == True:
- print("err <Code>: could not found, creat? y/n")
- # Secondary_response()
- # 2. exec command
- matched = Stateful.MatchTomlKeys('dev_config.toml', commands, 'sqlite3')
- print(matched)
- except:
- print("err <Code>: Syntax error")
- con.close()
- if __name__ == "__main__":
- while(1):
- sy_i = input("sql: ").split(" ")
- Operate_sqlite3(dbPath, sy_i)
|