我是 MySQL-python 连接器编码的新手,详情如下
I am a newbie to the MySQL-python connector coding, specifics given below
我需要将一个变量连接到我希望从 table:
中检索特定详细信息的搜索条件
purchase = input("Please enter your Transaction ID(Found in the format - Letter-Number-Letter-Letter-Number, like A9BH1): ")
这里,我需要'Purchase'作为
中的条件
sql = "select * from 4wps where T_ID = "
cursor.execute(sql)
result = cursor.fetchall()
我不知道如何在 'T_ID =' 之后将 'purchase' 输入到上面的示例中。我已经关注了一个朋友的代码,但他显然是从某处复制的。
我在印度 CBSE 排名第 12,这是一个项目,因此我不能使用任何高级的东西。
只需这样添加:
sql = "select * from 4wps where T_ID = '" + purchase + "'"
如果您阅读 official docs,您可以(并且应该!)使用元组或字典将参数传递到您的查询中:
cursor.execute(operation, params=None, multi=False)
对于您的查询,您可以这样做。
sql = 'SELECT * FROM 4wps WHERE T_ID = %s'
cursor.execute(sql, (purchase,))
或者这样
sql = 'SELECT * FROM 4wps WHERE T_ID = %(tid)s'
params = {'tid': purchase}
cursor.execute(sql, params)
在这两种情况下,连接器都会将您的 purchase
变量的内容放入查询中,并会在必要时自动为字符串添加任何引号。使用这种技术通常是首选,因为它提供了一些针对 SQL 注入攻击的保护。
我不确定这是否可行,但想象一下如果用户输入以下内容:
Please enter your Transaction ID
(Found in the format - Letter-Number
-Letter-Letter-Number, like A9BH1):
(DROP TABLE 4wps)
也许你的数据table会被破坏。
另一个SQL注入的幽默例子是Bobby Tables which is explained again here
我需要将一个变量连接到我希望从 table:
中检索特定详细信息的搜索条件purchase = input("Please enter your Transaction ID(Found in the format - Letter-Number-Letter-Letter-Number, like A9BH1): ")
这里,我需要'Purchase'作为
中的条件 sql = "select * from 4wps where T_ID = "
cursor.execute(sql)
result = cursor.fetchall()
我不知道如何在 'T_ID =' 之后将 'purchase' 输入到上面的示例中。我已经关注了一个朋友的代码,但他显然是从某处复制的。
我在印度 CBSE 排名第 12,这是一个项目,因此我不能使用任何高级的东西。
只需这样添加:
sql = "select * from 4wps where T_ID = '" + purchase + "'"
如果您阅读 official docs,您可以(并且应该!)使用元组或字典将参数传递到您的查询中:
cursor.execute(operation, params=None, multi=False)
对于您的查询,您可以这样做。
sql = 'SELECT * FROM 4wps WHERE T_ID = %s'
cursor.execute(sql, (purchase,))
或者这样
sql = 'SELECT * FROM 4wps WHERE T_ID = %(tid)s'
params = {'tid': purchase}
cursor.execute(sql, params)
在这两种情况下,连接器都会将您的 purchase
变量的内容放入查询中,并会在必要时自动为字符串添加任何引号。使用这种技术通常是首选,因为它提供了一些针对 SQL 注入攻击的保护。
我不确定这是否可行,但想象一下如果用户输入以下内容:
Please enter your Transaction ID
(Found in the format - Letter-Number
-Letter-Letter-Number, like A9BH1):
(DROP TABLE 4wps)
也许你的数据table会被破坏。
另一个SQL注入的幽默例子是Bobby Tables which is explained again here