Python3.7 pyodbc完美配置访问access数据库


Posted in Python onOctober 03, 2019

环境 win2008 r2 64为系统

python3.7、pyodbc

安装好python3.7以后,那么就需要安装pyodbc了。

数据库连接

数据库连接网上大致有两种方法,一种是使用pyodbc,另一种是使用win32com.client,测试了很多遍,最终只有pyodbc成功,而且比较好用,所以这里只介绍这种方法

工具库安装

在此基础上安装pyodbc工具库,在cmd窗口执行如下语句安装

pip install pyodbc

如果安装了anaconda也可以使用conda install pyodbc

Python3.7 pyodbc完美配置访问access数据库

分享给大家供大家参考,具体如下:

检验是否可以正常连接数据库检查是否有一个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”驱动程序

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未发
现数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnect)')

例如上面这样的提示就需要安装64位的ODBC 驱动器:

64位ODBC驱动器的下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=13255
直接安装会报错,所以我们需要修改一下文件AccessDatabaseEngine_X64.exe,先对其进行解压,然后打开AccessDatabaseEngine_X64文件夹,有一个AceRedist.msi文件。用Orca软件将AceRedist.msi打开,找到找到LaunchCondition里面的BLOCKINSTALLATION,删除那一行数据并进行保存。然后再运行AceRedist.msi,就可以把64位的ODBC 驱动器安装成功。

如果感觉上面的操作比较麻烦,可以直接下载三水点靠木小编已经处理过的版本。

下载地址:https://3water.com/softs/695978.html

注意:

1、不用配置数据源
2、Orcad的下载地址 https://3water.com/softs/16217.html

下面是经过三水点靠木小编测试过的代码

access是2000的,理论上2010也可以。

import pyodbc 
 
DBfile = r"F:\python\caiji.mdb" # 数据库文件需要带路径
print(DBfile)
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ DBfile +";Uid=;Pwd=;") 
cursor = conn.cursor() 
SQL = "SELECT * from sites;"
for row in cursor.execute(SQL): 
 print(row) 
cursor.close() 
conn.close()

如果可以打印出结果

Python3.7 pyodbc完美配置访问access数据库

完整测试代码

# -*-coding:utf-8-*-
import pyodbc
 
# 连接数据库(不需要配置数据源),connect()函数创建并返回一个 Connection 对象
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\data\goods.mdb')
# cursor()使用该连接创建(并返回)一个游标或类游标的对象
crsr = cnxn.cursor()
 
# 打印数据库goods.mdb中的所有表的表名
print('`````````````` goods ``````````````')
for table_info in crsr.tables(tableType='TABLE'):
 print(table_info.table_name)
 
 
l = crsr.execute("SELECT * from goods WHERE goodsId='0001'")# [('0001', '扇叶', 20, 'A公司', 'B公司', 2000, 2009)]
 
rows = crsr.execute("SELECT currentStock from goods") # 返回的是一个元组
for item in rows:
 print(item)
 
l = crsr.execute("UPDATE users SET username='lind' WHERE password='123456'")
print(crsr.rowcount) # 想知道数据修改和删除时,到底影响了多少条记录,这个时候你可以使用cursor.rowcount的返回值。
 
# 修改数据库中int类型的值
value = 10
SQL = "UPDATE goods " \
 "SET lowestStock=" + str(value) + " " \
 "WHERE goodsId='0005'"
 
# 删除表users
crsr.execute("DROP TABLE users")
# 创建新表 users
crsr.execute('CREATE TABLE users (login VARCHAR(8),userid INT, projid INT)')
# 给表中插入新数据
crsr.execute("INSERT INTO users VALUES('Linda',211,151)")
 
''''''
# 更新数据
crsr.execute("UPDATE users SET projid=1 WHERE userid=211")
 
# 删除行数据
crsr.execute("DELETE FROM goods WHERE goodNum='0001'")
 
# 打印查询的结果
for row in crsr.execute("SELECT * from users"):
 print(row)
 
 
# 提交数据(只有提交之后,所有的操作才会对实际的物理表格产生影响)
crsr.commit()
crsr.close()
cnxn.close()

补充

# -*- coding: utf-8 -*-
# 功能:python连接access2010数据库(.accdb)
 
import pyodbc
 
DBfile = r"C:\Users\lenovo\Desktop\test.accdb" # 数据库文件
conn = pyodbc.connect(r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")
 
 
cursor = conn.cursor()
SQL = "SELECT * from table1;"
for row in cursor.execute(SQL):
  print row.col1
cursor.close()

注意:win7系统是64位,office安装的是32位,AccessDatabaseEngine安装的是32位。

在win7 64位系统打开ODBC数据源管理器:

    要查看32位ODBC驱动:运行 C:/Windows/SysWOW64/odbcad32.exe

    要查看64位ODBC驱动:运行 C:/WINDOWS/system32/odbcad32.exe或者控制面板—管理工具—数据源(ODBC)

    如果只运行odbcad32.exe,则默认打开的是后者。

剩下的就需要你自行发挥了,三水点靠木小编今天就先介绍到这了,后期我们会分享更多的资料

Python 相关文章推荐
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
python如何修改装饰器中参数
Mar 20 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python----数据预处理代码实例
Mar 20 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
Django框架model模型对象验证实现方法分析
Oct 02 #Python
Python 线程池用法简单示例
Oct 02 #Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 #Python
Python shutil模块用法实例分析
Oct 02 #Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 #Python
Python全栈之列表数据类型详解
Oct 01 #Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 #Python
You might like
php的一个简单加密解密代码
2014/01/14 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
Babel 入门教程学习笔记
2018/06/13 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python Pandas 箱线图的实现
2019/07/23 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
地方课程教学计划
2015/01/19 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
常住证明范本
2015/06/23 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
Django框架中表单的用法
2022/06/10 Python