sql >> データベース >  >> RDS >> Mysql

テーブル名としてのPythonMySQLdb変数

    これがSQLステートメントのようです:

    cursor.execute("INSERT INTO %s (description, url) VALUES (%s, %s);", (table_name.encode("utf-8"), key.encode("utf-8"), data[key].encode("utf-8")))
    

    IIRC、テーブルの名前はない パラメータ化できる (不適切に引用されるため)。これを別の方法で文字列に挿入する必要があります(できれば安全に、要求されたテーブル名がホワイトリストに登録されたテーブル名のセットと一致することを確認してください)...例:

    _TABLE_NAME_WHITELIST = frozenset(['four'])
    
    ...
    if table_name not in _TABLE_NAME_WHITELIST:
        raise Exception('Probably better to define a specific exception for this...')
    
    cursor.execute("INSERT INTO {table_name} (description, url) VALUES (%s, %s);".format(table_name=table_name),
        (table_name.encode("utf-8"),
         key.encode("utf-8"),
         data[key].encode("utf-8")))
    



    1. SQL Server(T-SQL)で「date」を「datetime」に変換する例

    2. MySQLで.csvアップロードの進行状況を確認する方法

    3. MySQL:SQL構文にエラーがあります...'desc)VALUES(' Idea'、' Description')'の近く

    4. MySQL 5.7 /8.0とMySQL5.6で繰り返し選択されるたびに、サブクエリのrand()列が再評価されました