自由帳

既に知っていることも含めて再アウトプット用に書きます✍️

mysqldump Options

Option Name Description Introduced Deprecated
--add-drop-database Add DROP DATABASE statement before each CREATE DATABASE statement
--add-drop-table Add DROP TABLE statement before each CREATE TABLE statement
--add-drop-trigger Add DROP TRIGGER statement before each CREATE TRIGGER statement
--add-locks Surround each table dump with LOCK TABLES and UNLOCK TABLES statements
--all-databases Dump all tables in all databases
--allow-keywords Allow creation of column names that are keywords
--apply-replica-statements Include STOP REPLICA prior to CHANGE REPLICATION SOURCE TO statement and START REPLICA at end of output 8.0.26
--apply-slave-statements Include STOP SLAVE prior to CHANGE MASTER statement and START SLAVE at end of output 8.0.26
--bind-address Use specified network interface to connect to MySQL Server
--character-sets-dir Directory where character sets are installed
--column-statistics Write ANALYZE TABLE statements to generate statistics histograms
--comments Add comments to dump file
--compact Produce more compact output
--compatible Produce output that is more compatible with other database systems or with older MySQL servers
--complete-insert Use complete INSERT statements that include column names
--compress Compress all information sent between client and server 8.0.18
--compression-algorithms Permitted compression algorithms for connections to server 8.0.18
--create-options Include all MySQL-specific table options in CREATE TABLE statements
--databases Interpret all name arguments as database names
--debug Write debugging log
--debug-check Print debugging information when program exits
--debug-info Print debugging information, memory, and CPU statistics when program exits
--default-auth Authentication plugin to use
--default-character-set Specify default character set
--defaults-extra-file Read named option file in addition to usual option files
--defaults-file Read only named option file
--defaults-group-suffix Option group suffix value
--delete-master-logs On a replication source server, delete the binary logs after performing the dump operation 8.0.26
--delete-source-logs On a replication source server, delete the binary logs after performing the dump operation 8.0.26
--disable-keys For each table, surround INSERT statements with statements to disable and enable keys
--dump-date Include dump date as "Dump completed on" comment if --comments is given
--dump-replica Include CHANGE REPLICATION SOURCE TO statement that lists binary log coordinates of replica's source 8.0.26
--dump-slave Include CHANGE MASTER statement that lists binary log coordinates of replica's source 8.0.26
--enable-cleartext-plugin Enable cleartext authentication plugin
--events Dump events from dumped databases
--extended-insert Use multiple-row INSERT syntax
--fields-enclosed-by This option is used with the --tab option and has the same meaning as the corresponding clause for LOAD DATA
--fields-escaped-by This option is used with the --tab option and has the same meaning as the corresponding clause for LOAD DATA
--fields-optionally-enclosed-by This option is used with the --tab option and has the same meaning as the corresponding clause for LOAD DATA
--fields-terminated-by This option is used with the --tab option and has the same meaning as the corresponding clause for LOAD DATA
--flush-logs Flush MySQL server log files before starting dump
--flush-privileges Emit a FLUSH PRIVILEGES statement after dumping mysql database
--force Continue even if an SQL error occurs during a table dump
--get-server-public-key Request RSA public key from server
--help Display help message and exit
--hex-blob Dump binary columns using hexadecimal notation
--host Host on which MySQL server is located
--ignore-error Ignore specified errors
--ignore-table Do not dump given table
--include-master-host-port Include MASTER_HOST/MASTER_PORT options in CHANGE MASTER statement produced with --dump-slave 8.0.26
--include-source-host-port Include SOURCE_HOST and SOURCE_PORT options in CHANGE REPLICATION SOURCE TO statement produced with --dump-replica 8.0.26
--insert-ignore Write INSERT IGNORE rather than INSERT statements
--lines-terminated-by This option is used with the --tab option and has the same meaning as the corresponding clause for LOAD DATA
--lock-all-tables Lock all tables across all databases
--lock-tables Lock all tables before dumping them
--log-error Append warnings and errors to named file
--login-path Read login path options from .mylogin.cnf
--master-data Write the binary log file name and position to the output 8.0.26
--max-allowed-packet Maximum packet length to send to or receive from server
--net-buffer-length Buffer size for TCP/IP and socket communication
--network-timeout Increase network timeouts to permit larger table dumps
--no-autocommit Enclose the INSERT statements for each dumped table within SET autocommit = 0 and COMMIT statements
--no-create-db Do not write CREATE DATABASE statements
--no-create-info Do not write CREATE TABLE statements that re-create each dumped table
--no-data Do not dump table contents
--no-defaults Read no option files
--no-set-names Same as --skip-set-charset
--no-tablespaces Do not write any CREATE LOGFILE GROUP or CREATE TABLESPACE statements in output
--opt Shorthand for --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
--order-by-primary Dump each table's rows sorted by its primary key, or by its first unique index
--password Password to use when connecting to server
--password1 First multifactor authentication password to use when connecting to server 8.0.27
--password2 Second multifactor authentication password to use when connecting to server 8.0.27
--password3 Third multifactor authentication password to use when connecting to server 8.0.27
--pipe Connect to server using named pipe (Windows only)
--plugin-dir Directory where plugins are installed
--port TCP/IP port number for connection
--print-defaults Print default options
--protocol Transport protocol to use
--quick Retrieve rows for a table from the server a row at a time
--quote-names Quote identifiers within backtick characters
--replace Write REPLACE statements rather than INSERT statements
--result-file Direct output to a given file
--routines Dump stored routines (procedures and functions) from dumped databases
--server-public-key-path Path name to file containing RSA public key
--set-charset Add SET NAMES default_character_set to output
--set-gtid-purged Whether to add SET @@GLOBAL.GTID_PURGED to output
--shared-memory-base-name Shared-memory name for shared-memory connections (Windows only)
--show-create-skip-secondary-engine Exclude SECONDARY ENGINE clause from CREATE TABLE statements 8.0.18
--single-transaction Issue a BEGIN SQL statement before dumping data from server
--skip-add-drop-table Do not add a DROP TABLE statement before each CREATE TABLE statement
--skip-add-locks Do not add locks
--skip-comments Do not add comments to dump file
--skip-compact Do not produce more compact output
--skip-disable-keys Do not disable keys
--skip-extended-insert Turn off extended-insert
--skip-opt Turn off options set by --opt
--skip-quick Do not retrieve rows for a table from the server a row at a time
--skip-quote-names Do not quote identifiers
--skip-set-charset Do not write SET NAMES statement
--skip-triggers Do not dump triggers
--skip-tz-utc Turn off tz-utc
--socket Unix socket file or Windows named pipe to use
--source-data Write the binary log file name and position to the output 8.0.26
--ssl-ca File that contains list of trusted SSL Certificate Authorities
--ssl-capath Directory that contains trusted SSL Certificate Authority certificate files
--ssl-cert File that contains X.509 certificate
--ssl-cipher Permissible ciphers for connection encryption
--ssl-crl File that contains certificate revocation lists
--ssl-crlpath Directory that contains certificate revocation-list files
--ssl-fips-mode Whether to enable FIPS mode on client side
--ssl-key File that contains X.509 key
--ssl-mode Desired security state of connection to server
--tab Produce tab-separated data files
--tables Override --databases or -B option
--tls-ciphersuites Permissible TLSv1.3 ciphersuites for encrypted connections 8.0.16
--tls-version Permissible TLS protocols for encrypted connections
--triggers Dump triggers for each dumped table
--tz-utc Add SET TIME_ZONE='+00:00' to dump file
--user MySQL user name to use when connecting to server
--verbose Verbose mode
--version Display version information and exit
--where Dump only rows selected by given WHERE condition
--xml Produce XML output
--zstd-compression-level Compression level for connections to server that use zstd compression 8.0.18

dev.mysql.com

wip_django雑メモ

環境構築

$ python3 -m venv .venv
$ source .venv/bin/activate
$ python3 -m pip install django~=4.0.2
~
WARNING: You are using pip version 21.3.1; however, version 22.0.3 is available.
You should consider upgrading via the 'python3 -m pip install --upgrade pip' command.
~
$ python3 -m pip install --upgrade pip

migrationファイルの作成方法

models.pyに定義してものを基準にmigrationファイルが作成される。 例:

1 blog/models.pyを作成する

# blog/models.py
from django.db import models
from django.urls import reverse


class Post(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(
        "auth.User",
        on_delete=models.CASCADE,
    )
    body = models.TextField()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("post_detail", kwargs={"pk": self.pk})

2 コマンドでmigrationファイルを作成する

# blog/models.pyのmigrationファイルのみを作成する
python manage.py makemigrations blog

or

# migrationファイルが未作成の全てのmodels.pyに適応される
python manage.py makemigrations

3 migration実行

python manage.py migrate

Pythonでのrails console

# Django Extensionsを入手するにはpipを使います。
pip install django-extensions

# プロジェクトで django_extensions を有効にするには、プロジェクトの settings.py ファイルで INSTALLED_APPS に追加する必要があります。
# django_project/settings.py
INSTALLED_APPS = (
    ...
    'django_extensions',
    ...
)

# Interactive Python Shells
 ./manage.py shell_plus --ipython

github.com

github.com

2つのテキストファイルの差分を確認するコマンド

.
├── bucket-source.txt
└── bucket-target.txt


# ファイルの中身
# 例:
2022-02-16 13:22:50     152916 hogehoge
2010-05-02 13:22:50     292916 fugafuga
2021-07-16 14:34:00     352916 piyopiyo

実行

diff <(cut -c 20- bucket-target.txt) <(cut -c 20- bucket-source.txt)

# 出力結果
11937d11936
<           0 log/
24923c24922
< 1

atmarkit.itmedia.co.jp

[ワンライナー]指定した複数バージョンのマイグレーションをロールバック

for v in `echo バージョン番号1 バージョン番号2 バージョン番号3 バージョン番号4 バージョン番号5`; do bundle exec rails db:migrate:down VERSION=$v; done

モデルのロード/バリデーション時に文字列型の属性値をNFC正規化する

NFD正規化されたUNICODE文字列が入力された時に、合字(濁点付きかな)のレンダリングが不自然になる問題を回避する

# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
  include UnicodeNormalizer
end
# frozen_string_literal: true

module UnicodeNormalizer
  extend ActiveSupport::Concern

  TARGET_COLUMN_TYPES = %i[string text].freeze
  EXCEPTIONAL_MODEL_NAMES = %w[Hoge].freeze

  included do
    after_find :normalize_columns
    before_validation :normalize_columns
  end

  private

  def normalize_columns
    # UNICODE正規化の対象外の場合、早期return
    return if EXCEPTIONAL_MODEL_NAMES.include?(self.class.to_s)

    target_attribute_names = self.class.columns_hash.select { |_k, v| TARGET_COLUMN_TYPES.include?(v.type) }.keys
    attributes.each do |k, v|
      next unless target_attribute_names.include?(k)
       # unicode_normalizeメソッドを持たない属性値(nil / serialize)をスキップ
      next unless v.respond_to?(:unicode_normalize)


      send("#{k}=", v.unicode_normalize(:nfc))
    rescue Encoding::CompatibilityError
      next
    end
  end
end