web-dev-qa-db-ja.com

Pythonを使用してMicrosoft Accessデータベースを読み取るには何が必要ですか?

PythonでMicrosoft Accessデータベースにアクセスするにはどうすればよいですか? SQLで?

Linuxで動作するソリューションを希望しますが、Windowsでも問題ありません。

読み取りアクセスのみが必要です。

33
Georg Schölly

私は [〜#〜] pyodbc [〜#〜] を使用して、MS Accessデータベースに正常に接続しました-Windowsでは。インストールは簡単で、使用方法は非常に簡単です。正しい接続文字列(MS Accessの接続文字列がリストに記載されています)を設定するだけで、例に進むことができます。

23
Alex Boschmans

Linuxでは、現在のところMDBToolsが唯一のチャンスです。 [係争中]

Windowsでは、pypyodbcでmdbファイルを処理できます。

Access mdbファイルを作成するには:

import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )

これはHello Worldスクリプトです pypyodbcのAccessサポート機能を完全にデモステートにします。

免責事項:私はpypyodbcの開発者です。

29
pypyodbc

pyodbcこのSO質問 は、それを使用してMS Accessを読み取ることができることを示しています。

10
stuartd

良い解決策のように聞こえます。あなたが望むよりも「金属」に少し近いかもしれないもう一つは、MDBツールです。

MDB Tools は、Microsoft DLLを使用せずにMS Accessデータベース(mdbファイル)からのデータのエクスポートを容易にするオープンソースライブラリとユーティリティのセットです。したがって、非Windows OSはデータを読み取ることができます。または、別の言い方をすれば、MDBファイルのレイアウトをリバースエンジニアリングしています。

また、ACCDBファイルでの作業を開始したのではないかと思いますが、その機能に対する要求はあまり多くないでしょう。

9
Tony Toews

古い質問ですが、Windowsのpypyodbcの代替案としてADOを投稿すると思いました。結局のところ、COMを介して(旧式のODBCとは対照的に)最新のドライバーを使用して、Accessデータベース、Excelスプレッドシート、その他すべてのものを簡単に入手できます。

次の記事をご覧ください。

3
Erik Knowles

個人的に、MDB Toolsを(ODBC unixODBCのようなものと一緒に))PythonまたはPHP Linuxで、何度も試行した後でも、この質問に対する他の回答の指示を試したところです here で、「セグメンテーションエラー(コアダンプ)」しか得られませんでした。

ただし、Linuxで.ydbファイルと.accdbファイルの両方をJythonまたはCPython + JayDeBeApiから読み取るために CanAccess JDBCドライバーを取得しました。 Ubuntu 14.04 LTSでの設定方法の詳細な手順については、他の回答 here を参照してください。

2
Gord Thompson

Accessデータベースをpandas dataframe(Windows)として読み取るには。

これは非常に迅速で簡単なソリューションであり、小規模なデータベースで使用できました。

Excelへの永続的なリンクを作成し、そのファイルを保存することで(数回クリックするだけで)Accessデータベースを読むことができます。リンクは次のとおりです。

https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

その後、そのExcelファイルをpandasデータフレームとして読み取ることができます。

したがって、たとえば、リンクされたExcelファイルを「link_to_master.xlsx」として\ FileStore\subfolder1\subfolderの場所に保存します。

Pythonで次を実行します。

import pandas as pd
import os
os.chdir('\\\\FileStore\\subfolder1\\subfolder') #sets the folder location
df = pd.read_Excel('link_to_master.xlsx') # reads the Excel file
df

pythonスクリプト。つまり、ExcelとAccessの間のリンクは静的です。

2
Tim0th1

Ubuntu 12.04では、これを機能させるためにこれを行いました。

Pyodbcをインストールします。

$ Sudo apt-get install python-pyodbc

いくつかの追加のドライバーをインストールしてください:

$ Sudo apt-get install mdbtools libmdbodbc1

DBに接続し、すべてのテーブルを表示する小さなテストプログラムを作成します。

import os
import pyodbc

db_path = os.path.join("path", "toyour", "db.mdb")
odbc_connection_str = 'DRIVER={MDBTools};DBQ=%s;' % (db_path)
connection = pyodbc.connect(odbc_connection_str)
cursor = connection.cursor()

query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0"
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
    print row

役に立てば幸いです。

2
Menda

ほとんどの場合、データにアクセスするには SQLAlchemy のようなNiceフレームワークを使用するか、少なくとも推奨します。 Accessのサポート は「実験的」ですが、あまり問題なく使用したことを覚えています。ボンネットの下で pyodbc を使用してAccess dbsに接続するため、Windows、Linux、OS Xなどで動作するはずです。

1
Nico

EQL Data を使用してデータベースをWebに同期する場合、JSONまたはYAMLを使用してAccessテーブルのコンテンツをクエリできます。 http://eqldata.com/kb/1002

この記事はPHPについて書かれていますが、Pythonでも同様に機能します。

0
apenwarr

Python WindowsでMS Accessに接続する方法は、この方法を使用することです。 PythonでMS Accessに接続する 。私は解決策を見つけました: MS AccessとPython)との接続を解決する

Linuxでの接続は試していません!

0
combuilder

余裕がある場合は、ネイティブのCOM32クライアントAPIを介してMS-Access DBを読み取るこのPythonクラスを修正および更新してみてください。 Microsoft Accessの抽出および操作クラス

0
ankostis