【问题标题】:Connecting from Python on Linux to MS Access [duplicate]从 Linux 上的 Python 连接到 MS Access [重复]
【发布时间】:2019-11-21 10:17:57
【问题描述】:

我正在尝试连接到 linux 环境中的访问 .mdb 文件。 到目前为止,我已经在这样的窗口中做到了这一点:

import pyodbc

DRIVER="{Microsoft Access Driver (*.mdb, *.accdb)}"

def connect():
   PATH = '...file.mdb'
   con = pyodbc.connect('DRIVER={};DBQ={}'.format(DRIVER,PATH))
  return con

现在在 Ubuntu 18 中尝试这个,这将不起作用,因为 Microsoft 访问驱动程序不可用。我一直在尝试解决这个问题,主要是使用 MDBTools。安装 MDBTools 并将驱动程序更改为 MDBTools 后,我收到此错误:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'libmdbodbc.so' : file not found (0) (SQLDriverConnect)")

我不知道如何解决这个问题,消息来源说下载一个 libmdbodbc 包,但似乎这个包不再存在。

【问题讨论】:

  • 可能听起来很傻,但您是否确认您的系统上没有libmdbodbc.so?
  • @JoshuaSchlichting 所以我不太了解包在 linux 中是如何工作的,所以我不知道该文件 supposed 在哪里,但我确实在 @987654327 找到了它@。所以我也尝试直接将驱动程序更改为该文件,这给了我错误pyodbc.Error: ('HY000', 'The driver did not supply an error!')。同样,不知道我是否在做任何有意义的事情。
  • 这听起来与这个问题非常相似:stackoverflow.com/q/47180843/3589609 这里接受的答案安装了所需的旧版本库。也许可以按照这些思路测试一些东西?
  • @JoshuaSchlichting 这些都与 mssql 驱动程序有关,我不知道从哪里获取访问 mdbodbc 文件
  • @SpeedOfRound - 你可能对this answer感兴趣。

标签: python-3.x ubuntu ms-access pyodbc mdbtools


【解决方案1】:

我对“linux 环境”一无所知,不管它是什么,但这里有一些适合我的选项。


# MS Access
import pyodbc


conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\your_path_here\\your_DB.accdb;')
cursor = conn.cursor()
cursor.execute('select * from tracking_sales')


for row in cursor.fetchall():
    print (row)

# https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/


********  ********  ********  ********  ********  ********  ********  ********  


#import pypyodbc
import pyodbc

# MS ACCESS DB CONNECTION
pyodbc.lowercase = False
conn = pyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
    r"Dbq=C:\\your_path\\your_DB.mdb;")

# OPEN CURSOR AND EXECUTE SQL
cur = conn.cursor()

# Option 1 - no error and no update
cur.execute("UPDATE dbo_test SET Location = 'New York' Where Status = 'Scheduled'");
conn.commit()


cur.close()
conn.close()


********  ********  ********  ********  ********  ********  ********  ********  


# select records from a table
import pyodbc

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\your_path\\your_DB.accdb;')
cursor = conn.cursor()
cursor.execute('select * from Table2')

for row in cursor.fetchall():
    print (row)


# insert data into 2 fields in a table    
import pyodbc

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Users\\Excel\\Desktop\\Coding\\Microsoft Access\\Split_and_Transpose.accdb;')
cursor = conn.cursor()

cursor.execute(''' INSERT INTO Table2 (ExplodeKey, ExplodeField)
                    VALUES(5, 'RMS')  ''')

conn.commit()


********  ********  ********  ********  ********  ********  ********  ********  

【讨论】:

  • “Microsoft Access 驱动程序 (*.mdb, *.accdb)”仅适用于 Microsoft Windows。其他环境(例如 Linux、macOS)无法使用该驱动程序。
猜你喜欢
  • 2017-11-15
  • 2020-07-05
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多