2 回答

TA貢獻1877條經(jīng)驗 獲得超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 中執(zhí)行此操作的方法是使用字符串格式/格式化字符串,甚至只是簡單的連接(我更喜歡前兩個選項,因為它們更清晰)
有關(guān)更多信息,請參閱本文:https ://realpython.com/python-f-strings/

TA貢獻1827條經(jīng)驗 獲得超8個贊
您嘗試格式化 sql 查詢的方式出現(xiàn)錯誤。請更改以下行:
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 連接器提供的格式化選項會更好,這樣查詢替換將由連接器引擎執(zhí)行,這很可能可以防止 SQL 注入問題。
添加回答
舉報