Python使用pyodbc连接Access数据库Access2016

--coding:utf-8--

'''Access数据库连接网上大致有两种方法,一种是使用pyodbc,另一种是使用win32com.clientI(此处方法一安装,win32com下次有空再试试)
方法一:
一、安装第三方库 pyodbc
Pip install pyodbc

二、检验是否可以正常连接数据库
检查是否有一个Microsoft Access ODBC驱动程序可用于你的Python环境(在Windows上)的方法:

>>> import pyodbc

>>> [x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]

如果你看到一个空列表,那么您正在运行64位Python,并且需要安装64位版本的“ACE”驱动程序。
如果您只看到['Microsoft Access Driver (*.mdb)']并且需要使用.accdb文件,那么您需要安装32位版本的“ACE”驱动程序

三、安装64位的ODBC 驱动器:
1.Microsoft Access 2016 数据库引擎可再发行程序包
1.Microsoft Access Database Engine 2016 Redistributable

https://www.microsoft.com/en-us/download/details.aspx?id=54920

2.Microsoft Access 2010 数据库引擎可再发行程序包
2.Microsoft Access Database Engine 2010 Redistributable
https://www.microsoft.com/en-us/download/details.aspx?id=13255
右击文件accessdatabaseengine_X64.exe(约79.5Mb大小)选择以管理员模式运行即可安装【此处使用版本为2016】
[
报错:Microsoft office Click-to-Run Service (Process ld: 4240)
解决:打开任务管理器,可以看到在后台有一个Microsoft Office Click-to-run(SXS)的进程。
]

注意:

  1. 如何查看Access是32位还是64位
    --->>> 文件 > 账户 > 关于Access'''

import pyodbc

python_Access.accdb

DBfile = r"./python_Access.accdb" # 数据库文件需要带路径
print(DBfile)
d = [x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
print(d)

连接数据库(不需要配置数据源),connect()函数创建并返回一个 Connection 对象

1.创建链接

conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")

cursor()使用该连接创建(并返回)一个游标或类游标的对象

2.创建游标

cursor = conn.cursor()

cnxn = pyodbc.connect('DSN=pyAcc.mdb;PWD=password')

cursor = cnxn.cursor()

print('查询所有表名')
for table_info in cursor.tables(tableType='TABLE'):
print(table_info.table_name)

3.创建SQL查询语句

SQL = "SELECT * from datatable;"

SQL = "SELECT * from 销售出库详情 where id<10;"

4.执行查询

datas = cursor.execute("SELECT * from 销售出库详情") # <pyodbc.Cursor object at 0x000001B851E04BB0>
print(type(datas))
for row in cursor.execute(SQL):
print(row) # <class 'pyodbc.Row'>
print(type(row))
cursor.close()
conn.close()

posted @ 2022-03-02 12:32  zechariah1  阅读(1230)  评论(0编辑  收藏  举报