PythonでSQLAlchemyを使用しローカルに保存したSQLite3のdbファイルにパスを通してみます。(データベースの接続)
今回はSQLAlchemyライブラリを用います。このライブラリはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■ローカル上に保存したSQLite3のdbファイルにパスを通す
では、早速ローカル上に保存したSQLite3のdbファイルにパスを通してみますが、今回は検証として、まずは下記のコードを記述し、SQLite3のdbファイルが置かれている場所(フォルダパス)を指定してみます。
なお、今回は「C:\pg」に「sqiite3」というフォルダを作成し、SQLiteコマンドラインプログラムをインストールし、配置し、「test.sqlite3」というdbファイルも用意しました。
■コード
from sqlalchemy import create_engine engine = create_engine('C:\pg\sqiite3\test.sqlite3', echo = True) print(engine)
■実行・検証
このスクリプトを「sql_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
Traceback (most recent call last): File "sql_test.py", line 3, in engine = create_engine('C:\pg\sqiite3\test.sqlite3', echo = True) File "", line 2, in create_engine File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\sqlalchemy\util\deprecations.py", line 309, in warned return fn(*args, **kwargs) File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\sqlalchemy\engine\create.py", line 530, in create_engine u = _url.make_url(url) File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\sqlalchemy\engine\url.py", line 731, in make_url return _parse_rfc1738_args(name_or_url) File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\sqlalchemy\engine\url.py", line 792, in _parse_rfc1738_args raise exc.ArgumentError( sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 'C:\pg\sqiite3 est.sqlite3'
実行してみると、「sqlalchemy.exc.ArgumentError」というエラーが発生し、指定したパスでは、パスが通りませんでした。
■改善
■コード
from sqlalchemy import create_engine engine = create_engine('sqlite:///C:\\pg\\sqiite3\\test.sqlite3', echo = True) print(engine)
パスが通りませんでしたので、今度はコードを改善し、Windows10で実行するため、バックスラッシュをエスケープするような形にします。また、スラッシュ3つで絶対パスを指定します。
■実行・検証
「sql_test.py」のファイルを変更し、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、今度は先程の「sqlalchemy.exc.ArgumentError」というエラーは発生しないことが確認できました。
コメント