PythonでSQLAlchemyを使用しローカルに保存したSQLite3のdbファイルにパスを通す

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」というエラーは発生しないことが確認できました。

コメント

タイトルとURLをコピーしました