2 回答
TA贡献1877条经验 获得超6个赞
你似乎只是sql字符串错误。您正在尝试将 3 个字符串添加在一起,但混淆了语法,以下是一些具有正确语法的选项:
# option 1
sql = f"CREATE TABLE IF NOT EXISTS {machine} (virtual_mem varchar(255), disk_usage varchar(255),cpu_usage varchar (255)(;"
# option 2
sql = "CREATE TABLE IF NOT EXISTS {table_name} (virtual_mem varchar(255), disk_usage varchar(255),cpu_usage varchar (255));".format(
table_name=machine
)
基本上,代码中的“machine”是一个字符串,并且是您在那里的sql块,我们希望这个字符串被“注入”到我们的字符串中。
在 python 中执行此操作的方法是使用字符串格式/格式化字符串,甚至只是简单的连接(我更喜欢前两个选项,因为它们更清晰)
有关更多信息,请参阅本文:https ://realpython.com/python-f-strings/
TA贡献1827条经验 获得超7个赞
您尝试格式化 sql 查询的方式出现错误。请更改以下行:
sql = "CREATE TABLE IF NOT EXISTS "+ machine("virtual_mem varchar(255), disk_usage varchar(255),cpu_usage varchar (255);")
对于这样的格式字符串:
sql = f"CREATE TABLE IF NOT EXISTS {machine} (virtual_mem varchar(255), disk_usage varchar(255),cpu_usage varchar (255);"
如果您检查 mysql 连接器提供的格式化选项会更好,这样查询替换将由连接器引擎执行,这很可能可以防止 SQL 注入问题。
添加回答
举报