初めて質問させて頂きます。
現在、私はpythonを独学で勉強しており、学習の一環でちょっとしたwebアプリ(非常に小規模でURLも2つくらいのものを想定)を開発しようと考えています。
pythonの構文やwebフレームワーク(flask)は一通り勉強しました。

しかし、開発環境の構築のところでよくわからないところがあったので、その点を質問させて頂きます。

具体的な質問内容としては「仮想環境(pythonのvertualenv-venvを想定)と仮想マシン(Vagrantを想定)の違いと開発環境の構築について」です。

私が調べた限りですと、pythonの仮想環境は、複数のアプリケーションを一つのサーバで走らせる時などにpythonのバージョンやそれぞれのパッケージ、モジュールなどが競合しないように、それぞれのアプリケーションに適したpython環境を構築するというイメージです。
一方で、仮想マシンは自身のローカルPC上に実際のアプリケーションを走らせるサーバ環境を構築してしまうものというイメージを持っています。pythonの仮想環境よりもより基礎となる部分に関わっているものだと考えています。

その上でですが、webアプリを開発する場合、pythonの仮想環境を構築した上でコードを完成させ、その後仮想マシンを構築し、そこでテスト起動してみるというのが一般的な流れなのでしょうか。

今回、この疑問の契機となったのは、データベースの設計です。webアプリで利用するDBを今回MySQLにしようと考えているのですが、上記のような流れ(仮想環境下でコード構築->仮想マシン下でwebアプリのテスト起動)で開発する場合、ちょっとしたコードの確認をする上で(コードがしっかり動いてMySQLに保存されているか確認する程度のコードの小規模な実行を想定)、MySQLを自身のPCにそのままインストールする必要があるのかなと思います(vertualenvではpython関連は分離するもMySQLまでは分離されないのではないかと思っています)。しかし、今後他のwebアプリを開発する時などに何らかの支障がでることも考え、仮想環境や仮想マシンのような閉じられた環境下でインストールするのが良いのではないかというのが、そもそもの疑問の契機です。

冗長かつ一般論での質問となってしまいましたが、ご回答いただけますと幸いです。

どうぞよろしくお願いします。