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求素数示例分享
Feb 16 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python3.6正式版新特性预览
Dec 15 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
numpy返回array中元素的index方法
Jun 27 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
Python使用pdb调试代码的技巧
May 03 Python
如何在mac下配置python虚拟环境
Jul 06 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 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
德生PL550的电路分析
2021/03/02 无线电
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
Js注册协议倒计时的小例子
2013/06/24 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
Python 类的继承实例详解
2017/03/25 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
python实现证件照换底功能
2019/08/20 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python实现批量修改文件名
2020/03/23 Python
python之语音识别speech模块
2020/09/09 Python
Python识别验证码的实现示例
2020/09/30 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
《雷雨》教学反思
2014/02/20 职场文书
生日宴会策划方案
2014/06/03 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
办公室禁烟通知
2015/04/23 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android