PythonからMySQLデータベースへの接続と操作を行う手順を解説します。MySQLとPythonの連携が具体的に使われる場面や必要なライブラリの導入から始まり、データベースの作成、テーブルの操作、データの挿入・取得・更新・削除までをサンプルコードとともに紹介しています。 はじめに Pythonは汎用性が高く、データベースとの連携も得意とされています。MySQLは広く利用されるデータベース管理システムであり、PythonからMySQLを操作することでウェブアプリケーションの開発やデータ解析、ユーザー管理など幅広い用途に活用できます。 本記事ではPythonからMySQLデータベースに接続して基本的な操作を行う手順を、サンプルコードを交えて解説します。 MySQLとは? MySQLはオープンソースかつ高性能なリレーショナルデータベース管理システム(RDBMS)であり、データの格納や取得、更
はじめに 『SQL アンチパターン』には,リレーショナル・データベースの設計・運用にあたってのよくある失敗例が25個紹介されている.本記事では,5ヶ月間の開発経験の中で,自分が実際に遭遇した事例のうち,3つを紹介する.コード例は,実際の事例を単純化して作成したものである. 環境は以下を想定する. フレームワーク: Ruby on Rails 6.0 データベース: MySQL 8.0 12章 インデックスショットガン(闇雲インデックス) エンジニアのインターンを始めてはや2ヶ月が過ぎようとしていた頃,ボスから与えられた指令は,「お前,ちょっとインデックス見てこい」というものだった.これまで複合インデックスの効果的な使用を十分に意識できていなかったからその辺りを重点的に見てほしいとのことだった.MENTOR の原則の出番である. MENTOR の原則 MENTOR の原則は,データベースのイ
MySQL/MariaDB をデバッグする実践的方法を解説する。この記事ではデバッグを行うための準備を行い、具体的なデバッグの方法については (2) 以降の記事で説明する予定である。なお、一連の記事すべてにおいて MySQL 8.0.24 および MariaDB 10.5.9 を前提として解説する。 Building MySQL/MariaDB MySQL/MariaDB のそれぞれについて、ビルドする方法を簡単にまとめておく。以下の記述は筆者の開発環境 (Vagrant Box bento/ubuntu-20.04) を前提としたものである。 MySQL Boost 同梱版のソースを公式からダウンロードし展開する。GitHub から取得すると Boost のバージョンを合わせるのがかなり面倒なので、Boost 同梱版を使うのが吉である。 wget https://dev.mysql.co
OSS(オープン・ソース・ソフトウェア)データベースの企業利用をお考えのお客様必見! 代表的なOSSデータベースである「PostgreSQL(ポストグレスキューエル)」をビジネスで本格利用したいと考えるお客様が増えています。しかしOSSデータベースには「企業ユースに耐えうる信頼性・可用性の確保」「情報漏えいなどのセキュリティ対策」「トラブル時のサポート体制確保」など検討しなければならない課題があるのも事実です。そこで、富士通ではPostgreSQLを企業利用するために技術面、サポート面から全面的にバックアップ!PostgreSQLを安心して利用できる体制を整えています。 本ページではPostgreSQLの運用ノウハウや導入いただいたお客様の声(導入事例)やテクニカルキーパーソンへのインタビュー記事、対談、PostgreSQLコミュニティー活動への参加などをとおして当社のPostgreSQL
Believe it or not, I don't think that title is clickbait. There is a set of things that you can do when working with a Postgres database which I have found made my and my coworker's lives much more pleasant. Each one is by itself small, but in aggregate have a noticeable effect. Use UUID primary keys UUIDs have downsides Truly random UUIDs doesn't sort well (and this has implications for indexes)
MySQLの論理バックアップツールというと、mysqldumpは皆さんご存知のことでしょう。mysqldumpはシリアルで処理されるため、大きなデータベースのバックアップとリストアには大変時間がかかりました。 その後mysqlpumpが登場し、これによりバックアップはパラレルで処理するため高速化されましたが、リストアはmysqldumpと同様シリアルで処理されるため、これもまた時間がかかりました。 mysqldumpとmysqlpumpについては以下記事をご参照ください。 第15回 mysqldumpを使ってバックアップする 第153回 mysqlpumpを使ってバックアップを取ってみる MyDumperはバックアップとリストアをパラレルで処理するため、mysqldumpやmysqlpumpよりも高速です。 ただし、最近ではMySQL ShellにMySQL Shellダンプユーティリティ
PgBouncer 1.24.0 has been released. This release contains a number of new features along with a variety of improvements and bug fixes. Highlights are: Tracking and limiting connection counts per user and database. Greatly reducing performance overhead of RELOAD on setups with TLS enabled. Prepared statement support being turned on by default. See the full details in the changelog. Download here: p
こんにちは、ラクマの宮崎です。 MySQLのオンラインDDLを実行する際にメタデータロックがかかってしまい困ったので、オンラインDDLとメタデータロックについて調べて手元で試したことをまとめました。 MySQLのバージョンは 5.6、ストレージエンジンは InnoDB です。 この記事の多くは、MySQL 公式ドキュメントの以下のページを参考に書いています。 公式ドキュメント①:14.11.1 オンライン DDL の概要 公式ドキュメント②:14.11.2 オンライン DDL でのパフォーマンスと並列性に関する考慮事項 DDLとは オンラインDDLとは オンラインDDLに対応しているDDL Ruby on RailsのMigrationでオプションをつける方法 オンラインDDLの注意点とWaiting for table metadata lock が発生するケース Waiting for
DRBDとは DRBDは、ストレージのレプリケーション(複製)のためのソフトウェアです。サーバ間でブロックデバイス(ハードディスク、パーティション、論理ボリュームなど)の内容をミラーします。 DRBDによるミラーは次の特徴を持ちます。 リアルタイムレプリケーション. 上位アプリケーションがデバイスのデータを書き換えると、 そのデータをリアルタイムでレプリケートします。 アプリケーションから透過的で. アプリケーションは、データが複数のホスト上に格納されていることを意識する必要はありません。 同期 または 非同期 の両方に対応した同期でミラーリングを行う場合には、 すべてのホストのディスクへの書き込みが完了した後で、アプリケーションが完了通知を受け取ります。 非同期でミラーリングを行う場合には、 ローカルディスクへの書き込みが完了したときに、すぐにアプリケーションが完了通知を受け取ります。
DS課の古川です。 RDS Proxyの登場により、AWS LambdaとAmazon RDS間接続のボトルネックを回避できるようになりました。 今回は、RDS Proxyを経由してAWS LambdaからAmazon RDSに接続する手順を試してます。 はじめに 最大同時接続数 LambdaとRDBの接続 RDS Proxy リソース Security Group Lambda用 RDS Proxy用 RDS用 手順 1. データベースを作成 2. 接続テスト 踏み台サーバー or Cloud9を用意 RDSに接続 テスト用のテーブルを作成 3. Secrets Managerの設定 4. RDS Proxyの起動 5. Lambda関数の作成 serverless.yml lambda_rds_proxy.py 6. Lambdaを実行 気をつけるポイント 参考 はじめに 最大同時接続
Mar 13th, 2025 Lev Kokotov Postgres scales. No other two words that I’ve ever heard of, produced more controversy. At least in the circles I hang out in, in the company basement where infrastructure elves make the Rails app go brrr. A lot of people believe, against all odds, and marketing campaigns by Big NoSQL, that technology you know is better than the devil you just heard pitched at the Engine
MySQL EXPLAINとは EXPLAINとは、MySQLがどのような実行計画でクエリ実行するかを表示するコマンド。EXPLAINの結果を見ることで効率の悪いクエリを見つけたり、改善結果を確認できる。 EXPLAIN ( SELECT f.film_id, f.title, f.release_year, a.first_name, a.last_name FROM film f INNER JOIN film_actor fa ON fa.film_id = f.film_id INNER JOIN actor a ON a.actor_id = fa.actor_id ); JOIN時のEXPLAINの見方 JOINする場合は、駆動表が一番最初に表示される。 先程の例だと、actorテーブルが駆動表になっているということになる。 駆動表を固定したい場合は、MySQL 8.0からはJ
GoodJob is a new Postgres-based, multithreaded, second-generation ActiveJob backend for Ruby on Rails. Inspired by Delayed::Job and Que, GoodJob is designed for maximum compatibility with Ruby on Rails, ActiveJob, and Postgres to be simple and performant for most workloads. Designed for ActiveJob. Complete support for async, queues, delays, priorities, timeouts, and retries with near-zero configur
AWS Database Blog Performing major version upgrades for Amazon Aurora MySQL with minimum downtime December, 2022: Amazon Relational Database Service (Amazon RDS) now supports Amazon RDS Blue/Green Deployments to help you with safer, simpler, and faster updates to your Amazon Aurora and Amazon RDS databases. Blue/Green Deployments create a fully managed staging environment that allows you to deploy
株式会社パルケの悩めるCTO、みつるです パルケでこれまでリリースしたプロダクトは、Render.comというクラウドベンダー上に構築しました。 Render.comは、2022年の頭頃からTwitterなどのSNSで名前を目にするようになりました。 半年ほど前から実際に運用してみたところ、他のサービスへの乗り換えが考えられないぐらい素敵が溢れていました。 私は悩めるCTOなのですが、Render.comのおかげで、クラウドサービスについてほとんど悩む必要がありません。 この記事でRender.comの素敵さが少しでも伝われば幸いです。 Render.comとは何なのか 公式より(意訳) Rnder.comは、あなたのアプリやウェブサイトをビルド・実行する統合クラウドサービスです。無料のTLS認証、グローバルなCDN、DDoS防御、プライベートネットワーク、Gitからの自動デプロイが利用で
はじめに 最近は主に花粉症に悩まされており、目が痒くてたまりません。 また、娘の生活がガラッと変わったせいで、毎日貧乏ヒマ無しです。 そんな中、たまたま早起きできたので奮起して久々に書いてみました。 問題が起きる環境 MySQL8.0.17以前 transaction_isolationがREAD-COMMITTED WHERE句の条件が一意ではない。(フルテーブルスキャンだと発生しやすくなる) キーの値がたすきがけになってる トランザクション開始+SELECT ...FOR UPDATE→UPDATEのようにロックを取っている 先に実行されたトランザクションが、たすきがけになっているキー値の若い(っていうのかな?)方のロックを取る 何が起きるかと言うと、SELECT ...FOR UPDATEのWHERE句で抽出した行に対してロックを取ってるのに、 後から別セッションで実行されたSELE
Enabling Automatic InnoDB Configuration for a Dedicated MySQL Server
はじめに 前回、MySQLのmaster slave構成をDockerで作ってみた が、実際の開発では複数DBをアプリケーションから使うには一工夫必要である。もっとも素朴な方法は使用するDBの接続情報をアプリケーションですべて保持しておき、read系/write系で使い分けることだと思う。しかし、これは次のような問題がある。 DBの接続情報は途中で変わりうる アプリケーションのロジックにDBの使い分けが入るのは面倒(だし複雑) そこで、今回は ProxySQL を試してみる。ProxySQLは アプリケーションとDBの間に入って、次のようなことをしてくれる。 クエリに応じたmaster / slave への自動プロキシ 負荷分散 シームレスな接続設定の変更 どの程度メジャーなのかはいまいちわかっていないが、公式の mysql-proxyよりは使われているようだったので選んだ。ちなみにPro
オラクル、MySQLからオブジェクトストアにある最大400テラバイトのCSVファイルなどにクエリを高速実行できる「MySQL HeatWave Lakehouse」発表。Oracle CloudWorld 2022 オラクルは米ラスベガスで10月17日から4日間に渡って開催したイベント「Oracle CloudWorld 2022」で、MySQL HeatWaveからオブジェクトストアのデータファイルに対して直接クエリを発行できる「MySQL HeatWave Lakehouse」を発表しました(日本オラクルの発表)。 [News] Oracle Announces MySQL HeatWave Lakehouse with 17X Faster Query Performance vs. Snowflake and 6X Faster than Redshift on 400 TB Wo
研修期間中にSQLをサクサク使いこなせるようになりたいと思い、今回"SQLを使いこなしたい!虎の巻"シリーズを始めました。まずはDockerでPostgreSQLの環境構築からスタートです! 気付いたら10月で外の寒さについていけてない、新卒エンジニアのたいがーです? 研修が始まり、早半年。研修期間中にお勧めしていただいたものの、読めていない本も早くも軽く溜まってきたところ。(積読消費したい) Amazon RDSについて調べるたびに"DB、そんな触ったことないんだよな…"となっていました。研修中の今こそSQLを勉強するタイミング!ということで、今回はSQLを使いこなせるまでのシリーズを始めてみることにしました? 題して、"SQLを使いこなしたい!虎の巻"シリーズです! PostgreSQLを触る環境を整えよう 手を動かしながらSQLの学習を進めていこう!ということで、実行環境を整えていき
いよいよ年末ですね。分析担当の森藤です。 この記事は TVer アドベントカレンダー 24日目の記事です (遅くなりました) みなさまははてな時間というものを聞いたことがありますでしょうか? q.hatena.ne.jp また、レポートなどの締め切りを確認するときに「今日までの締め切りって◯◯さんが業務を開始する明日の8時までですよね?」という確認をしたことはないでしょうか? このような「日は変わってしまったが、前日として扱うことが便利な場合」に24時を飛び越え、26時や28時、と表現することが有ります。 この表現のことを「30時間制」と言うらしいです。 ja.wikipedia.org 特に放送業界では24時を越えてからの深夜番組の表現を当日として扱うほうが都合がいいため頻繁に「25時23分から」という形で記述され、そして、この情報がそのまま私達 TVer には渡ってきます。 UTC に
思い出せるうちに思い出せる範囲で… 例によって世に出る頃には全く違うことに取り組んでいるので、忙しくしてると何も書かずに終わってしまうのですが、こんなご時世、年末年始休暇があっても何も用事がなく折角なのですこし書き残します。本来は本家開発者のブログで英語で書くべきなんですが、込み入った話を英語で書く労力をかけるくらいなら次の問題解決にかけたほうがいいので、とりあえず日本語で書き残します… 私がMySQL界を離れている間にリリースされた8.0になってlog_sysのデザインが新しくなり、スケールが良くなったのですが、既存のハードを利用する大半のユーザーには、未だ荒かった実装のせいでデメリットの方が大きかったと思います。2019末くらいには悪い挙動と原因はある程度分かっていましたが、修正リリースは2020後半になってしまいました。 既存のスペックのハードウェアと、CPUコア多数搭載の最新ハード
PostgreSQL を Windows にインストールする手順について少し詳しく説明します。Red Hat 系 Linux へのインストールについては こちらの記事 を参照してください。 説明は基本的に PostgreSQL 16、Windows 10 を対象にしますが、バージョンで異なる部分はなるべく補足します。 PostgreSQL のインストール PostgreSQL のインストール方法はいくつかあります。おもな方法は以下のとおりです。 ソースコードからビルド バイナリの zip アーカイブを使う インストーラを使う とくにこれといった理由がない限り、インストーラを使うのがよいでしょう。 ソースコードからのビルドは、Windows でもできなくはないですが、Linux 以上に手間がかかる上、Windows の知識も必要になります。PostgreSQL 自体を開発したり、ビルド時のオ
データベースのバージョンアップの際、アプリケーションの網羅的なテストが可能であれば良いのですが、どうしても難しいケースがあります。 そのような場合、リプレイツールで本番環境に流れているクエリを、試験環境でリプレイ(再現)し、動作確認を取る方法もあります。 リプレイツールを探す MySQL の クエリ リプレイができるツールを探してみました。 Percona Tookit に pt-log-player というツールが含まれていたのですが、いつのまにか、なくなってました。。。 2013年にリリースされた、percona tookit 2.2 で削除されてしまったようです。 We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. Granted, no tool is ever really gone: i
先月リリースされた MySQL Shell 8.0.21 にバックアップのスレッドを並列化させてパラレルで実行する機能と、そのバックアップを同じくパラレルでインポートするユーティリティが追加されました。 公式リファレンスは以下になります。 Instance Dump Utility and Schema Dump Utility Dump Loading Utility 上記のリファレンスに記載されていますが、バックアップ及びリストアをパラレルで実行できるだけでなく、バックアップの保存先として、Oracle Cloud の Object Storage を指定できるという画期的な機能も持っています。 今回は、上記の機能について簡単に確認してみたいと思います。 (MySQL Shellで、1つのテーブルデータファイルをパラレルでインポートする Parallel Table Import Ut
We are excited to announce the official release of DocumentDB—an open-source document database platform and the engine powering the vCore-based Azure Cosmos DB for MongoDB, built on PostgreSQL. NoSQL databases have historically provided cloud-specific solutions without a common standard for interoperability. This has led to a growing demand for an interoperable, portable, and fully supported produ
Want to learn more about unlimited IOPS w/ Metal, Vitess, horizontal sharding, or Enterprise options? Talk to Solutions By Mike Coutermarsh | August 16, 2022 We’d like to introduce FastPage, a new gem for ActiveRecord that applies the MySQL “deferred join” optimization to your offset/limit queries. Here is a slow pagination query in Rails: Post.all.order(created_at: :desc).limit(25).offset(100) #
今年も早いものでもう年末です。 大掃除を意識した時に、「普段からこまめにやっておけば...」と毎年後悔しています。 そんな私とは違って、PostgreSQLには普段からデータをこまめに掃除してくれる優秀な「VACUUM」という機能があります。 しかもゴミがでやすい時は小まめに、そうでないときは手を抜いてゆっくりやるというように調整しながら掃除をしてくれます! ですがしっかりお世話をしないと、「あまりにも時間がかかりすぎる」「途中でやめてしまった」といったトラブルが発生します。 今回はそんなPostgreSQLのVACUUM機能を紹介したいと思います。 PostgreSQLのレコード更新/削除のしくみと問題点 1. PostgreSQLにおけるレコードの更新/削除のしくみ 2. ゴミデータが溜まることの問題点 PostgreSQLにおけるVACUUMの役割 1. 不要領域の回収/削除 2.
Amazon Aurora MySQL 互換エディションは、ライターノードの再起動を通じて読み取りの可用性を維持するようになりました。これまでは、ライターノードが再起動すると、Aurora MySQL クラスター内のすべてのノードも再起動していました。本日のリリースにより、リーダーノードはライターノードの再起動中に読み取りリクエストを処理し続けるようになり、これによりクラスターでの読み取りの可用性が改善されます。 計画されたライターノードの再起動は、通常、binlog の有効化や無効化などの静的パラメータを適用するために行われます。これらの再起動を通じて読み取りの可用性を維持することは、ライター設定に変更を加えることによる影響を軽減するのに役立ちます。さらに、フェイルオーバーが発生した場合の可用性が向上します。この場合、リーダーノードは引き続き使用可能であり、新しく昇格したライターに再接続
今回は前回に引き続き実技試験の予習として開発環境を作っていく 前回はPHP7+Apacheまで作ったのでMySQLを含めた環境を作っていく carametal.hatenablog.com こちらの記事を参考にさせていただきました。 qiita.com こちらの記事ではMySQLクライアントにphpMyAdminを使っていますが ひとまず環境構築のみの目的なのでphpMyAdminは扱いません。 前回の記事ではDockerfileを用いていましたが今回はdocker-composeで環境を作っていきます。 手始めにdocker-compose.ymlを作成 version: '3' services: php: image: php:7.2-apache volumes: - ./html:/var/www/html ports: - 8000:80 container_name: php
しばたです。 re:Invent 2020初日から盛り上がってますね。 Andy Jassyさんのキーノートの中でSQL ServerからAurora PostgreSQLへの移行のための新しいサービスBabelfish for Aurora PostgreSQL (Preview)が発表されたので現時点でわかっていることをまとめてみました。 注意事項 Babelfish for Aurora PostgreSQLは本日時点ではプレビュー版です。 本記事の内容は今後変更される可能性があります。 Babelfish for Aurora PostgreSQL とは? Babelfish for Aurora PostgreSQL(以後 Babelfishと表記)に関する情報は、現時点では以下のサービスページと公式ブログでのアナウンスが存在しています。 Babelfish for Amazon
3x3の領域で再帰的に分割する「Geo3x3」のいいところは、単純な前方一致で絞り込めるところ。 例えば、東京タワーのGeo3x3 E9139659937288 は、東京都港区あたりのメッシュ E913965 で始まります。 周辺を含めるときは1桁削って1から9を足すだけ。地球上、どの場所でも使えます。 緯度経度を持つ多量のデータから検索すると言えばデータベース。 select文でおなじみSQL(エスキューエル)は、主にデータベースからデータを取得するためのクエリー言語として使いますが、プログラムを組み込むことができるので、プログラミング言語でもあります。 ただし、標準化がちょっと遅かったせいで、データベースによって方言があります。 オープンソースでフリーで使える有名2大データベース、PostgreSQLとMariaDB(MySQL互換)に対応しました。 「Geo3x3 対応言語、58!」
ロリポップ!サーバーのデータベース(MySQL 5.6)バージョンアップ(更新)方法を、起こりやすいエラー( #1044 #1046 )解決方法と共に覚書き。 この記事は2024年2月15日「ライトプラン」のスペックアップによって、リライトしています。 特にライトプランの方は、……データベースを一度削除するというおっかない作業をしなくてはなりません……。 2024年、ロリポップのMySQL8.0 対応に伴い、サイトの内容も5.7から 8.0 に変更しております。画像の多くは5.7 のままですが、やることは 5.7 も 8.0 も同じです。 ロリポップ!サーバーのMySQLバージョンアップデート方法(削除や作成など) とりあえず、まず一体何をやるのか手順を簡単にまとめておきます。 バックアップを取る(しっかり取る) ロリポップ!へログイン ファイルマネージャー「ロリポップFTP」を開き「wp
概要 PostgreSQLをデフォルトのまま使用すると日本語文字列のソート結果が想定と異なる LOCALEを正しく設定することで修正可能 文字列の並び順は LC_COLLATE で制御されるこの設定がデフォルトだと en_US.utf8 となっていることが原因 動作確認環境 Docker PostgreSQL 11.5 対応方法 FROM postgres:11.5 RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 ENV TZ=Asia/Tokyo ENV LANG=ja_JP.UTF-8 ENV LANGUAGE=ja_JP:ja ENV LC_ALL=ja_JP.UTF-8 詳細及び再現手順 再現 起動 docker run -d --name postgres_1 pos
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く