Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中存储SQL查询?_Python_Mysql_Dictionary - Fatal编程技术网

Python 在字典中存储SQL查询?

Python 在字典中存储SQL查询?,python,mysql,dictionary,Python,Mysql,Dictionary,在python中为MySQL查询执行存储过程的最佳方法是什么 我真的需要能够访问密钥名,这就是为什么我选择使用字典的原因。任何建议都将不胜感激 reports = { 'z_report': """ SELECT * FROM calculation1 WHERE owner = "z" AND calculation1.`Last Seen` > CURDATE() - INTERVAL 7 DAY ; """ 'y_report': """ SELECT * FROM calculat

在python中为MySQL查询执行存储过程的最佳方法是什么

我真的需要能够访问密钥名,这就是为什么我选择使用字典的原因。任何建议都将不胜感激

reports = { 'z_report': """
SELECT * FROM calculation1
WHERE owner = "z"
AND calculation1.`Last Seen` > CURDATE() - INTERVAL 7 DAY
;
"""
'y_report': """
SELECT * FROM calculation1
WHERE owner = "y"
AND calculation1.`Last Seen` > CURDATE() - INTERVAL 7 DAY
;
"""
'x_report': """
SELECT * FROM calculation1
WHERE owner = "x"
AND calculation1.`Last Seen` > CURDATE() - INTERVAL 7 DAY
;
"""
'master_report': """
SELECT * FROM calculation1
WHERE calculation1.`Last Seen` > CURDATE() - INTERVAL 7 DAY
;
"""

p、 我已经知道这是vuln to SQLi,我只是想先做个原型

我不是说你的方法是好是坏。我只想回答你的具体问题:你可以把每个查询放在它自己的函数中

def do_z_report():
    # call MySQL with specific z_report query

def do_y_report():
    # call MySQL with specific y_report query
将以下内容添加到词典中:

queries = {'z_report': do_z_report, 'y_report' : do_y_report}
调用以下函数:

queries['z_report']()
queries['y_report']()

到底是什么问题?这些不是存储过程。它们只是字典中的sql查询字符串……好吧,我是sql新手,所以我将重命名这个问题,为什么不将每个查询放在单独的函数中,然后将函数(函数,而不是它们的名称)添加到字典中?顺便说一句,存储过程存储在数据库中,所以它们不是存储过程。我强烈建议使用这里的一个基本示例进行研究。您将继续使用字典,但这次除外,键(名称、索引等)将引用一条准备好的语句。因此,您在安全性和性能方面也会受益。为什么您要将函数名存储在dict中,而不是仅按名称调用函数?因为问题是如何将查询存储在字典中,并且将函数存储在字典中并在函数中维护查询似乎“更干净”—嗯,事实上-如何通过密钥名访问我看不出逻辑,如果要使用dict,则将查询存储在dict中如果要使用函数,则只需调用函数。询问者可能有某些原因想要使用密钥-我不知道原因是什么。我曾经做过一个命令行菜单。菜单号是关键。另一方面,将查询放在函数中的优点很明显:它易于读取、更改和参数化。使用键访问查询的代码与调用数据库的代码明显分开。换句话说,它提供了一个很小的抽象层,非常简单,可以实现原型化。