Reputation: 689
I am trying to write a Dataframe back into a Access database file .mdb
or .accdb
. I am using sqlalchemy
and sqlalchemy-access
to create a connection.
import sqlalchemy
db_file_path = os.path.join(dir_path, f"data\\{graph_name}\\results\\{file_name}")
connection_string = (r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' f"DBQ={db_file_path};" r'ExtendedAnsiSQL=1;')
connection_url = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
engine = sqlalchemy.create_engine(connection_url)
text_labels.to_sql('InstTextLabels', engine, index=False, if_exists='append')
I have pyodbc
and sqlalchemy-access
installed via pip
. If I were to run this in Python interactive shell or Jupyter Notebook, it all works. But when I build a one file executable with PyInstaller I get:
File "solver.py", line 499, in main
export_results(file_name, graph_name, downstream_low, downstream_high, objective_results, objective_fuses, objective_recloseres, nodes, text_labels, dir_path)
File "solver.py", line 399, in export_results
engine = sqlalchemy.create_engine(connection_url)
File "sqlalchemy\engine\__init__.py", line 500, in create_engine
File "sqlalchemy\engine\strategies.py", line 61, in create
File "sqlalchemy\engine\url.py", line 172, in _get_entrypoint
File "sqlalchemy\util\langhelpers.py", line 267, in load
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:access.pyodbc
[5880] Failed to execute script solver
I don't know why this keeps happening. My script only imports sqlalchemy
but I also included hiddenimports=['sqlalchemy_access', 'pyodbc']
in the .spec
file. Yet, nothing helps.
Upvotes: 1
Views: 2199
Reputation: 11
Add these import along with sqlalchemy:
import sqlalchemy_access as sa_a
import sqlalchemy_access.pyodbc as sa_a_pyodbc
Upvotes: 1