python-3.x - 从 Linux 上的 Python 连接到 MS Access
问题描述
我正在尝试连接到 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 包,但似乎这个包不再存在。
解决方案
我对“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()
******** ******** ******** ******** ******** ******** ******** ********
推荐阅读
- python - 如何使用套接字将元组列表从服务器发送到客户端?
- javascript - 事件在 JS 中被多次跟踪
- javascript - 我想用 Vue.js 在图像上创建一个 v-for 循环
- spring-boot - Spring-AMQP - 基于消息头的路由
- ruby-on-rails - Rails for 循环在第一次迭代后退出
- python-3.x - 使用 fancyimpute 对测试集进行软估算
- typescript - 同一类型的多个字段的接口
- python - 如何将随机键值对传递给 Python 中的函数/构造函数?
- mysql - 在配置文件 MySQL 8 中设置 LOCAL_INFILE
- swift - UIImage 未从 AWS S3 url 加载