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 相关文章推荐
Python实现决策树C4.5算法的示例
May 30 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python实现连连看辅助(图像识别)
Mar 25 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 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 url 加密解密函数代码
2011/08/26 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
网络教育毕业生自我鉴定
2013/10/10 职场文书
英文版餐饮业求职信
2013/10/18 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
2015年消防工作总结
2015/04/24 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
用Java实现简单计算器功能
2021/07/21 Java/Android
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server