PythonでMicrosoftAccessデータベースにアクセスするにはどうすればよいですか?SQLで?
Linuxで動作するソリューションが望ましいですが、Windowsでも解決できます。
読み取りアクセスのみが必要です。
PythonでMicrosoftAccessデータベースにアクセスするにはどうすればよいですか?SQLで?
Linuxで動作するソリューションが望ましいですが、Windowsでも解決できます。
読み取りアクセスのみが必要です。
私はPYODBCを使用してMSAccessデータベースに正常に接続しました-Windowsでは。インストールは簡単で、使用法はかなり簡単です。正しい接続文字列を設定するだけで(MS Access用の文字列がリストに示されています)、例を使用します。
あなたはいくつかの良い解決策のように聞こえるものを持っています。あなたが望むよりも「金属」に少し近いかもしれないもう一つはMDBツールです。
MDB Toolsは、MicrosoftDLLを使用せずにMSAccessデータベース(mdbファイル)からのデータのエクスポートを容易にするオープンソースライブラリとユーティリティのセットです。したがって、Windows以外のOSはデータを読み取ることができます。または、言い換えると、MDBファイルのレイアウトをリバースエンジニアリングしています。
また、彼らがACCDBファイルの作業を開始したとは思えず、その機能に対する要求はあまりないだろうということにも注意してください。
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
お役に立てば幸いです。
古い質問ですが、Windows用のpypyodbcの代替案であるADOを投稿すると思いました。結局のところ、COMを介してAccessデータベース、Excelスプレッドシート、およびその他の最新の(旧式のODBCとは対照的な)ドライバーを使用すると、非常に簡単に入手できます。
次の記事をチェックしてください。
個人的には、何度も試みた後でも、MDB Tools(およびunixODBCなどの関連するODBCのもの)をLinuxでPythonまたはPHPで正しく動作させることができませんでした。この質問に対する他の回答の指示をここで試したところ、 「セグメンテーション違反(コアダンプ)」しか得られませんでした。
ただし、UCanAccess JDBCドライバーを使用して、Linux上の.mdbファイルと.accdbファイルの両方をJythonまたはCPython+JayDeBeApiから読み取ることができました。Ubuntu 14.04 LTSで設定する方法の詳細については、こちらの他の回答を参照してください。
Accessデータベースをパンダデータフレームとして読み取るには(Windows)。
これは、私が小規模なデータベースにうまく使用した非常に迅速で簡単なソリューションです。
Excelへの永続的なリンクを作成し、そのファイルを保存することでAccessデータベースを読み取ることができます(数回クリックする必要があります)。ここにリンクします。
その後、そのExcelファイルをパンダデータフレームとして読み取ることができます。
したがって、たとえば、リンクされた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の間のリンクは静的です。
ほとんどの場合、SQLAlchemyのような優れたフレームワークを使用してデータにアクセスするか、少なくともそれをお勧めします。Accessのサポートは「実験的」ですが、あまり問題なく使用したことを覚えています。それ自体が内部でpyodbcを使用してAccessdbsに接続するため、Windows、Linux、OSXなどから機能するはずです。
EQLデータを使用してデータベースをWebに同期する場合は、JSONまたはYAMLを使用してAccessテーブルのコンテンツをクエリできます:http://eqldata.com/kb/1002。
その記事はPHPに関するものですが、Pythonでも同様に機能します。
時間に余裕がある場合は、ネイティブのCOM32クライアントAPIを介してMS-AccessDBを読み取るこのpythonクラスを修正および更新してみてください。MicrosoftAccessの抽出および操作クラス
WindowsでPythonをMSAccessに接続する方法は、次の方法を使用することです。Pythonを使用してMSAccessに接続します。たぶんあなたはWin7でいくつかの問題を見つけることができるので、私は解決策を見つけました:Windows7でMSAccessとPythonの間の接続を解決する
Linuxで接続しようとしたことはありません!