簡體   English   中英

如何在 python pymysql 中將字符串插入查詢

[英]how to insert string into query in python pymysql

我有以下查詢:

cursor = connection.cursor()

query = """
        SELECT *
        FROM `my_database`.table_a

        """
result = cursor.execute(query)

按預期工作。 但我需要更改my_database中的cursor.execute 我嘗試:

cursor = connection.cursor()

query = """
             SELECT *
             FROM %s.table_a

             """
result = cursor.execute(query, ("my_database",))

這給出了錯誤pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''my_database'.table_a at line 2")

請問如何在cursor.execute中插入數據庫名稱?

不可能在准備好的語句中使用占位符綁定數據庫名稱(或任何其他數據庫 object 名稱)。 除其他問題外,這將是一個安全風險。 但是,您可以在此處改用 f 字符串:

cursor = connection.cursor()

db_name = "my_database"
query = f"""
         SELECT *
         FROM {db_name}.table_a
         """
result = cursor.execute(query)

還應該提到的是,如果您確定數據庫名稱不是來自您自己的應用程序外部,則以上僅是 SQL 注入安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM