2009-06-26 78 views
21

在python中是否有使用MS Access數據庫的庫? win32模塊並不像MySQL庫那麼容易。有沒有更簡單的方法來使用MS Access與Python?用於python的MS Access庫

回答

32

根據你想要做什麼,pyodbc可能是你在找什麼。

import pyodbc 
db_file = r'''C:\x.mdb''' 
user = 'admin' 
password = '' 

odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;UID=%s;PWD=%s' %\ 
       (db_file, user, password) 
# Or, for newer versions of the Access drivers: 
odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;UID=%s;PWD=%s' %\ 
       (db_file, user, password) 

conn = pyodbc.connect(odbc_conn_str) 
+0

感謝您的兄弟。我感覺方便:) – Vicky 2009-06-26 06:41:32

+1

@Cristian Ciupitu:謝謝添加示例代碼 – stephan 2013-01-16 15:58:20

+3

肯定的方向。我唯一需要做的編輯是`* .mdb,* .accdb`而不是`* .mdb` – demongolem 2015-12-28 20:26:41

10

我不認爲的Win32是很難的。嘗試使用它的odbc模塊。與ODBC和PostgreSQL數據庫工作的代碼示例:

import odbc 

def get_pg_ver(db_alias): 
    connection = odbc.odbc(db_alias) 
    try: 
     cursor = connection.cursor() 
     cursor.execute('SELECT version()') 
     for row in cursor.fetchall(): 
      print row[0] 
    finally: 
     connection.close() 

get_pg_ver('odbc_name/user/passwd') 

這是我在Python和Jython中使用的每個DB驅動程序非常類似(我在PostgreSQL,Oracle和Informix的工作)。

3

我最近使用pywin32的adodbapi模塊取得了一些成功。

下面的代碼片段從網站this採取:

import adodbapi 

database = "db1.mdb" 
constr = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%s' % database 
tablename = "address" 

# connect to the database 
conn = adodbapi.connect(constr) 

# create a cursor 
cur = conn.cursor() 

# extract all the data 
sql = "select * from %s" % tablename 
cur.execute(sql) 

# show the result 
result = cur.fetchall() 
for item in result: 
    print item 

# close the cursor and connection 
cur.close() 
conn.close() 
7

您可以使用pypyodbc輕鬆創建Win32平臺上的一個空的訪問MDB文件,也很緊湊現有的Access MDB文件。

它可以那麼容易,因爲:

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

更多了,作爲一個DBI 2.0 ODBC庫,pypyodbc是pyodbc高度兼容,你可以做SQL數據庫查詢,如SELECT,INSERT,UPDATE與庫。

以下是關於pypyodbc的Access支持的完整Tutorial

聲明:我是pypyodbc的開發者。