34

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

Linuxで動作するソリューションが望ましいですが、Windowsでも解決できます。

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

4

12 に答える 12

29

Linuxでは、現時点でMDBToolsが唯一のチャンスです。[論争]

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

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

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

これは、 pypyodbcのAccessサポート関数を完全にデモ化するHelloWorldスクリプトです。

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

于 2013-03-14T02:56:02.763 に答える
23

私はPYODBCを使用してMSAccessデータベースに正常に接続しました-Windowsでは。インストールは簡単で、使用法はかなり簡単です。正しい接続文字列を設定するだけで(MS Access用の文字列がリストに示されています)、例を使用します。

于 2009-05-12T22:33:26.733 に答える
10

pyodbcはどうですか?このSOの質問は、それを使用してMSAccessを読み取ることが可能であることを示しています。

于 2009-05-12T15:39:23.023 に答える
10

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

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

また、彼らがACCDBファイルの作業を開始したとは思えず、その機能に対する要求はあまりないだろうということにも注意してください。

于 2009-05-13T02:32:10.383 に答える
5

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

お役に立てば幸いです。

于 2014-06-07T11:01:31.820 に答える
3

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

次の記事をチェックしてください。

于 2013-08-09T20:48:15.407 に答える
2

個人的には、何度も試みた後でも、MDB Tools(およびunixODBCなどの関連するODBCのもの)をLinuxでPythonまたはPHPで正しく動作させることができませんでした。この質問に対する他の回答の指示をここで試したところ、 「セグメンテーション違反(コアダンプ)」しか得られませんでした。

ただし、UCanAccess JDBCドライバーを使用して、Linux上の.mdbファイルと.accdbファイルの両方をJythonまたはCPython+JayDeBeApiから読み取ることができました。Ubuntu 14.04 LTSで設定する方法の詳細については、こちらの他の回答を参照してください。

于 2014-09-10T20:06:12.237 に答える
2

Accessデータベースをパンダデータフレームとして読み取るには(Windows)。

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

Excelへの永続的なリンクを作成し、そのファイルを保存することでAccessデータベースを読み取ることができます(数回クリックする必要があります)。ここにリンクします。

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

その後、その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の間のリンクは静的です。

于 2016-12-07T10:10:10.673 に答える
1

ほとんどの場合、SQLAlchemyのような優れたフレームワークを使用してデータにアクセスするか、少なくともそれをお勧めします。Accessのサポートは「実験的」ですが、あまり問題なく使用したことを覚えています。それ自体が内部でpyodbcを使用してAccessdbsに接続するため、Windows、Linux、OSXなどから機能するはずです。

于 2009-05-12T16:51:52.623 に答える
0

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

その記事はPHPに関するものですが、Pythonでも同様に機能します。

于 2009-05-12T22:00:41.620 に答える
0

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

于 2014-09-10T19:12:11.033 に答える
0

WindowsでPythonをMSAccessに接続する方法は、次の方法を使用することです。Pythonを使用してMSAccessに接続します。たぶんあなたはWin7でいくつかの問題を見つけることができるので、私は解決策を見つけました:Windows7でMSAccessとPythonの間の接続を解決する

Linuxで接続しようとしたことはありません!

于 2016-11-29T12:15:10.313 に答える