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




コメント