airflow.hooks.mysql_hook

Module Contents

class airflow.hooks.mysql_hook.MySqlHook(*args, **kwargs)[source]

Bases: airflow.hooks.dbapi_hook.DbApiHook

Interact with MySQL.

You can specify charset in the extra field of your connection as {"charset": "utf8"}. Also you can choose cursor as {"cursor": "SSCursor"}. Refer to the MySQLdb.cursors for more details.

Note: For AWS IAM authentication, use iam in the extra connection parameters and set it to true. Leave the password field empty. This will use the the “aws_default” connection to get the temporary token unless you override in extras. extras example: {"iam":true, "aws_conn_id":"my_aws_conn"}

conn_name_attr = mysql_conn_id[source]
default_conn_name = mysql_default[source]
supports_autocommit = True[source]
set_autocommit(self, conn, autocommit)[source]

MySql connection sets autocommit in a different way.

get_autocommit(self, conn)[source]

MySql connection gets autocommit in a different way.

Parameters

conn (connection object.) – connection to get autocommit setting from.

Returns

connection autocommit setting

Return type

bool

get_conn(self)[source]

Returns a mysql connection object

get_uri(self)[source]
bulk_load(self, table, tmp_file)[source]

Loads a tab-delimited file into a database table

bulk_dump(self, table, tmp_file)[source]

Dumps a database table into a tab-delimited file

static _serialize_cell(cell, conn)[source]

MySQLdb converts an argument to a literal when passing those separately to execute. Hence, this method does nothing.

Parameters
  • cell (object) – The cell to insert into the table

  • conn (connection object) – The database connection

Returns

The same cell

Return type

object

get_iam_token(self, conn)[source]

Uses AWSHook to retrieve a temporary password to connect to MySQL Port is required. If none is provided, default 3306 is used

bulk_load_custom(self, table, tmp_file, duplicate_key_handling='IGNORE', extra_options='')[source]

A more configurable way to load local data from a file into the database.

Warning

According to the mysql docs using this function is a security risk. If you want to use it anyway you can do so by setting a client-side + server-side option. This depends on the mysql client library used.

Parameters

Was this entry helpful?