PythonでMicrosoft Accessデータベースにアクセスするにはどうすればよいですか? SQLで?
Linuxで動作するソリューションを希望しますが、Windowsでも問題ありません。
読み取りアクセスのみが必要です。
私は [〜#〜] pyodbc [〜#〜] を使用して、MS Accessデータベースに正常に接続しました-Windowsでは。インストールは簡単で、使用方法は非常に簡単です。正しい接続文字列(MS Accessの接続文字列がリストに記載されています)を設定するだけで、例に進むことができます。
Linuxでは、現在のところMDBToolsが唯一のチャンスです。 [係争中]
Windowsでは、pypyodbcでmdbファイルを処理できます。
Access mdbファイルを作成するには:
import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
これはHello Worldスクリプトです pypyodbcのAccessサポート機能を完全にデモステートにします。
免責事項:私はpypyodbcの開発者です。
良い解決策のように聞こえます。あなたが望むよりも「金属」に少し近いかもしれないもう一つは、MDBツールです。
MDB Tools は、Microsoft DLLを使用せずにMS Accessデータベース(mdbファイル)からのデータのエクスポートを容易にするオープンソースライブラリとユーティリティのセットです。したがって、非Windows OSはデータを読み取ることができます。または、別の言い方をすれば、MDBファイルのレイアウトをリバースエンジニアリングしています。
また、ACCDBファイルでの作業を開始したのではないかと思いますが、その機能に対する要求はあまり多くないでしょう。
古い質問ですが、Windowsのpypyodbcの代替案としてADOを投稿すると思いました。結局のところ、COMを介して(旧式のODBCとは対照的に)最新のドライバーを使用して、Accessデータベース、Excelスプレッドシート、その他すべてのものを簡単に入手できます。
次の記事をご覧ください。
Accessデータベースをpandas dataframe(Windows)として読み取るには。
これは非常に迅速で簡単なソリューションであり、小規模なデータベースで使用できました。
Excelへの永続的なリンクを作成し、そのファイルを保存することで(数回クリックするだけで)Accessデータベースを読むことができます。リンクは次のとおりです。
その後、その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の間のリンクは静的です。
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
役に立てば幸いです。
ほとんどの場合、データにアクセスするには SQLAlchemy のようなNiceフレームワークを使用するか、少なくとも推奨します。 Accessのサポート は「実験的」ですが、あまり問題なく使用したことを覚えています。ボンネットの下で pyodbc を使用してAccess dbsに接続するため、Windows、Linux、OS Xなどで動作するはずです。
EQL Data を使用してデータベースをWebに同期する場合、JSONまたはYAMLを使用してAccessテーブルのコンテンツをクエリできます。 http://eqldata.com/kb/1002 。
この記事はPHPについて書かれていますが、Pythonでも同様に機能します。
Python WindowsでMS Accessに接続する方法は、この方法を使用することです。 PythonでMS Accessに接続する 。私は解決策を見つけました: MS AccessとPython)との接続を解決する
Linuxでの接続は試していません!
余裕がある場合は、ネイティブのCOM32クライアントAPIを介してMS-Access DBを読み取るこのPythonクラスを修正および更新してみてください。 Microsoft Accessの抽出および操作クラス