我正在创建一个分析和生成查询的程序.我很好奇SQLite中是否存在一个方法,以便我可以查询查询处理所需的时间?我无法以任何方式修改我的安装,因此这种方法需要开箱即用.我在python中编写我的工具,虽然我想我可以使用计时器类来执行时间 - 当我连接到远程计算机时这个方法不起作用(并返回一致的时间.)
我知道还有其他工具来解析SQL语句,但我出于教育目的推出了自己的工具.我现在卡住了我的语法..如果你能快速发现错误请告诉我.
SELECT = r'SELECT'
FROM = r'FROM'
COLUMN = TABLE = r'[a-zA-Z]+'
COMMA = r','
STAR = r'\*'
END = r';'
t_ignore = ' ' #ignores spaces
statement : SELECT columns FROM TABLE END
columns : STAR
| rec_columns
rec_columns : COLUMN
| rec_columns COMMA COLUMN
Run Code Online (Sandbox Code Playgroud)
当我尝试解析像'SELECT a FROM b;'这样的语句时 我在FROM令牌上遇到语法错误...非常感谢任何帮助!
(编辑)代码:
#!/usr/bin/python
import ply.lex as lex
import ply.yacc as yacc
tokens = (
'SELECT',
'FROM',
'WHERE',
'TABLE',
'COLUMN',
'STAR',
'COMMA',
'END',
)
t_SELECT = r'select|SELECT'
t_FROM = r'from|FROM'
t_WHERE …
Run Code Online (Sandbox Code Playgroud) 我有问题弄清楚这是否可行.任何指针都会很棒
我不确定确切的语法,但有点像
m = 3
d = putStr "d"
f = d ; m
Run Code Online (Sandbox Code Playgroud)
这样它会调用函数d
,并返回值m
而不是Maybe m
?
编辑:
我在寻找的更像是这样的?
eval s = s
m = 3
f = (eval s) ; m
Run Code Online (Sandbox Code Playgroud)