Я пишу это сообщение, чтобы попросить помощи, чтобы найти решение для этого python кода. Я пытаюсь создать визуализацию деталей FAA PMA по сравнению с базой данных деталей моей компании. Я уже делал это с помощью файлов Power Bi, SQL Query и Excel, но это не онлайн-визуализация. Каждый месяц мне нужно загружать детали FAA PMA по URL-адресу (https://rgl.faa.gov/Regulatory_and_Guidance_Library/rgPMA.nsf/f6a80b2e3c91131686257bcf0063a042/bc1b3424cc899bee86257beb006237ae/ $ FILE / PMA.zip ), чтобы обновить эту визуализацию.
При этом я пытался выполните эти коды python, чтобы прочитать файл Ms Access из вышеупомянутого URL-адреса и преобразовать его в Pandas DataFrame.
Однако мне не удалось выполнить эту задачу по следующим причинам:
Сначала я попытался использовать sqlalchemy, но обнаружились следующие ошибки.
from zipfile import ZipFile
from io import BytesIO
import urllib
from urllib.request import urlopen
from sqlalchemy import create_engine
import pandas as pd
r = urlopen("https://rgl.faa.gov/Regulatory_and_Guidance_Library/rgPMA.nsf/f6a80b2e3c91131686257bcf0063a042/bc1b3424cc899bee86257beb006237ae/$FILE/PMA.zip").read()
file = ZipFile(BytesIO(r))
pma_accdb = file.open("PMA.accdb")
connection_string = (r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=pma_accdb;'
r'ExtendedAnsiSQL=1;'
)
connection_url = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
engine = create_engine(connection_url)
sql_df = pd.read_sql("SELECT * FROM Parts", con=engine)
print(sql_df.head())
Ошибка: Traceback (последний вызов последним): File "C: / Users / thia go .ribeiro / .PyCharmCE2019.1 / config / scratches / scratch.py ", строка 17, в файле engine = create_engine (connection_url) File" C: \ Users \ thia go .ribeiro \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ site-packages \ sqlalchemy \ engine_ init _. Py ", строка 500, в create_engine return strategy.create (* args, ** kwargs) File" C: \ Users \ thia go .ribeiro \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ site-packages \ sqlalchemy \ engine \ strategy.py ", строка 61, в c reate entrypoint = u._get_entrypoint () File "C: \ Users \ thia go .ribeiro \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ site-packages \ sqlalchemy \ engine \ url.py", строка 172, в _get_entrypoint cls = registry.load (name) File "C: \ Users \ thia go .ribeiro \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ site-packages \ sqlalchemy \ util \ langhelpers. py ", строка 267, при увеличении нагрузки ex c .NoSuchModuleError (sqlalchemy.ex c .NoSuchModuleError: не удается загрузить плагин: sqlalchemy.dialects: access.pyodb c
После этого i Я пытался использовать pyodb c, но также были обнаружены следующие ошибки.
from zipfile import ZipFile
from io import BytesIO
from urllib.request import urlopen
import pyodbc
import pandas as pd
r = urlopen("https://rgl.faa.gov/Regulatory_and_Guidance_Library/rgPMA.nsf/f6a80b2e3c91131686257bcf0063a042/bc1b3424cc899bee86257beb006237ae/$FILE/PMA.zip").read()
file = ZipFile(BytesIO(r))
pma_accdb = file.open("PMA.accdb")
driver = '{Microsoft Access Driver (*.mdb, *.accdb)}'
filepath = pma_accdb
myDataSources = pyodbc.dataSources()
access_driver = myDataSources['MS Access Database']
cnxn = pyodbc.connect(driver=access_driver, dbq=filepath, autocommit=True)
crsr = cnxn.cursor()
crsr.execute("SELECT * FROM Parts")
sql_df = pd.read_sql("SELECT * FROM Parts", con=engine)
print(sql_df.head())
Ошибка: Traceback (последний вызов последний): строка 17, в cnxn = pyodb c .connect (driver = access_driver, dbq = filepath, autocommit = True) pyodb c .Error: ('HY000', '[HY000] [Microsoft] [Driver ODB C Microsoft Access] общая ошибка не удается открыть раздел реестра. Временная ( volatile) Ace DSN для процесса 0x2ef c Thread 0x4a20 DB C 0xd39ea788
Сказанное выше может вы, пожалуйста, помогите мне понять, где мой код неправильный, и как я могу его улучшить, чтобы читать MS Access с URL-адреса и преобразовывать его во фрейм данных pandas?