Python MS Access-Datenbank-Tabelle-Erstellung Von Pandas Dataframe Mit SQLAlchemy

Ich versuche zum erstellen einer MS Access-Datenbank von Python und Frage mich, ob es möglich ist eine Tabelle erstellen, die direkt aus ein pandas dataframe. Ich weiß, dass ich pandas dataframe.to_sql() Funktion erfolgreich schreiben dataframe um eine SQLite-Datenbank oder durch eine Verwendung von sqlalchemy Motor für einige andere Datenbank-format (aber nicht auf leider), aber ich kann nicht alle Stücke teilen, zusammen zu kommen. Hier der code-snippet, dass ich habe getestet mit:

import pandas as pd
import sqlalchemy
import pypyodbc     # Used to actually create the .mdb file
import pyodbc

# Connection function to use for sqlalchemy
def Connection():
    MDB = 'C:\\database.mdb'
    DRV = '{Microsoft Access Driver (*.mdb)}'
    connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=%s' % MDB
    return pyodbc.connect('DRIVER={};DBQ={}'.format(DRV,MDB))


# Try to connect to the database
try:
    Conn = Connection()
# If it fails because its not been created yet, create it and connect to it
except:
    pypyodbc.win_create_mdb(MDB)
    Conn = Connection()

# Create the sqlalchemy engine using the pyodbc connection
Engine = sqlalchemy.create_engine('mysql+pyodbc://', creator=Connection)

# Some dataframe
data = {'Values'     : [1., 2., 3., 4.],
        'FruitsAndPets'  : ["Apples", "Oranges", "Puppies", "Ducks"]}
df = pd.DataFrame(data)

# Try to send it to the access database (and fail)
df.to_sql('FruitsAndPets', Engine, index = False)

Ich bin mir nicht sicher, dass das, was ich versuche zu tun, ist sogar möglich, mit der aktuellen Pakete, die ich verwende, aber ich wollte überprüfen, bevor ich hier Schreibe meine eigenen hacky-dataframe zu MS Access-Tabelle Funktion. Vielleicht ist meine sqlalchemy-engine eingerichtet ist falsch?

Hier das Ende meiner Fehler mit mssql+pyodbc im Motor:

cursor.execute(statement, parameters)
sqlalchemy.exc.DBAPIError: (Error) ('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver] Could not find file 'C:\\INFORMATION_SCHEMA.mdb'. (-1811) (SQLExecDirectW)") u'SELECT [COLUMNS_1].[TABLE_SCHEMA], [COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH], [COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE], [COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME] \nFROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1] \nWHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?' (u'FruitsAndPets', u'dbo')

und das Ende Fehler für mysql+pyodbc im Motor:

cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'. (-3500) (SQLExecDirectW)") "SHOW VARIABLES LIKE 'character_set%%'" ()

Nur der Hinweis, es ist mir egal, wenn ich sqlalchemy oder pandas to_sql() ich bin auf der Suche nach einige einfache Weg, um ein dataframe in meinem MS Access-Datenbank leicht. Wenn das dump zu JSON dann eine loop-Funktion zum einfügen von Zeilen mithilfe von SQL manuell, was auch immer, wenn es gut funktioniert, werde ich es nehmen.

Schreibe einen Kommentar