最初に
alembicでmysqlに接続するときのpathで少し詰まったため、pathやurlの指定の仕方、dockerを使用した場合の接続の仕方などについてまとめます。
alembicとsqlalchemyのurl
alembicやsqlalchemyを使うとき、接続するためのurlを指定する必要があります。以下はalembic.iniのsqlalchemyのパスの例です。
書き方を詳しく説明すると、以下のようになります。
SQLAlchemyのcreate_engineで使用するpathも同様です。
path="{DBの名前}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}"
DBの名前はmysqlとかpostgresとかを指定します。driverは今回の場合だと、pymysqlです。
それ以降は必要なdbの情報を書いていきます。今回の例だと、rootユーザでパスワードは”password”になります。また、127.0.0.1(localhost)の33307ポート、データベース名をdbに指定しています。
ここでdockerを使用している方は注意が必要で、今回の場合だとapiコンテナからdbコンテナのmysqlに接続しようとしています。
上のpathのままだと、hostがlocalhostになっているため、apiコンテナの中のsqlを探してしまいます。
なので、dockerコンテナのmysqlに接続する場合は、mysqlが入っているコンテナの名前をhostにすると良いでしょう。
今回の場合は
path="{DBの名前}+{driver}://{username}:{password}@{コンテナ名}:{port}/{database}?charset={charset_type}"
最後に
dockerのネットワークについてもっと学ばなければと思いました。
コメント