pypyodbc 连接Access数据库常见报错整理
pypyodbc 连接Access数据库常见报错整理
一、背景
我目前用的数据库是Access,是微软旗下的一个小型数据库,有可视化界面,创建数据库跟创建一般的文件操作是一样的。创建好的数据库可以把它简单的理解成一个后缀为.odbc的文件,因为可以可视化操作,创建表也简单。所以创建库和表没必要写sql语句,不在本文描述范围内。
我这个人比较懒,喜欢把数据分析工作的例事写成python脚本,每周或者每个月运行一次,自己坐在旁边摸鱼就好了。脚本的思路是用python把相关的数据从Access数据库里提取出来,然后用pandas来做数据操作,最后再把结果导出成excel或者写到其他数据库里,所以目前用到的也只是python连接数据库、表的查询、插入。代码报错本来就是一件很正常的事,我之前也会带着报错信息去百度,但是由于Access有些老了,相应的找到的帖子也比较老,本文就是整理了一下这个过程中常见的报错和解决方法。
二、pypyodbc连接Access数据库常见操作
1、连接数据库:
import pypyodbc
import pandas as pd
strs = "Driver={Microsoft Access Driver(*.mdb,*.accdb)};DBQ=文件路径"
db = pypyodbc.win_connect_mdb(strs) # 连接数据库
cursor = db.cursor() #创建手柄
2、数据查询:
cursor.excute("select * from [表名]") #注意这里的中括号不是代表可以不传,而是为了避免因为中文表名引起的报错
data = cursor.fecthall() #变量接受数据,此时的数据是以二维列表存储的,也没有列名
data = pd.DataFrame(data)
data.columns = [col[0] for col in cursor.description] #cursor.description返回表的结构
cursor.excute()执行sql语句,除此之外还有cursor.excutemany() 、cursor.commit()等,大致跟pymysql差不多
3、将DataFrame数据插入数据库
cursor.executemany("insert into [表名] (字段1,字段2,字段2,...) values (?,?,?,...)",data.itertuples(index=False)) #遍历data数据,并逐条插入指定表内,values值用问号?占位,问号数量与字段数量保持一致
cursor.commit()
三、常见报错
1、函数序列错误:
(1) 问题根源一:数据源没有配置驱动
解决方法:配置驱动
步骤:
A、打开数据源管理器:打开控制面板——>系统和安全——>管理工具——>ODBC数据源(64位)
B、添加DNS:选择用户DNS或系统DNS——>点击添加——>选择Microsoft Access Driver(.mdb,.accdb)——>完成
注:上图中几个Microsoft Access开头的驱动程序都是常见的驱动,如果你的电脑上没找到,直接百度搜索下载ODBC驱动程序,然后默认安装就可以
C、命名数据源名——>选择数据源——>在目录下面找到数据库文件所在路径,或者在数据库名下面强写数据库路径——>确定
D、剩下的就是一路确定,要修改的话就是在用户DNS那里找到对应的数据源点击配置重复步骤C
(2)问题根源二:DataFrame为空,无法遍历
解决方法:检查自己的数据,DataFrame对象有数据即可
2、不能打开数据库|应用程序可能无法识别该数据库…:
问题根源:数据库达到内存上限,Access是小型数据库,一个库的内存上限是2G左右,数据库内存接近2G的时候如果再往里面插入过多数据就会报错
解决方法:换个数据库存储
3、无效的字符值或规格:
问题根源:待插入的数据类型与表的字段类型不符,多发生于日期类、数字类字段
解决方法:打开数据库对应表的设计视图,查看数据字段类型和格式。修改DataFrame对象对应列的类型
4、无效的sql语句、语句的语法错误、语法错误 (操作符丢失) 在查询表达式
问题根源:sql语句错误,且Access支持的sql语句跟sql server也有一些细微的区别
解决问题:检查sql语句,或者写一些简单的查询语句,再由pandas来处理数据
问题根源:sql语句错误,且Access支持的sql语句跟sql server也有一些细微的区别**
解决问题:检查sql语句,或者写一些简单的查询语句,再由pandas来处理数据
pypyodbc 连接Access数据库常见报错整理相关推荐
- MySQL数据库常见报错案例与错误代码说明
实例报错问题分析与解决方法: -报错1: Can't open file: 'xxx_forums.MYI'. (errno: 145) 问题分析: 这种情况是不能打开 cdb_forums.MYI造 ...
- postgres数据库常见报错
1.删除数据库报错 : postgres=# drop database lyy; ERROR: database "lyy" is being accessed by other ...
- python之常见报错整理
一.unindent does not match any outer indentation level 对于此错误,最常见的原因是,的确没有缩进.必须注意缩进问题,尤其是在python中,稍不注意 ...
- C#连接Access数据库时报错
文章目录 不可识别数据库格式 解决: 连接测试: 不可识别数据库格式 解决: Access数据库默认创建的数据库格式后缀一般为".accdb",需要把它改为".mdb&q ...
- python连接access数据库odbc_对Python通过pypyodbc访问Access数据库的方法详解
看书上通过ODBC访问数据库的案例,想实践一下在Python 3.6.1中实现access2003数据库的链接,但是在导入odbc模块的时候出现了问题,后来查了一些资料就尝试着使用pypyodbc,最 ...
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
FineReport使用中遇到的常见报错及解决办法(一) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看 ...
- docker安装mysql及相关配置、运行细节和常见报错解决方案
安装.运行 需要特别注意-v挂载到本机的目录的权限问题,否则报错:ERROR 2002 (HY000): Can't connect to local MySQL server through soc ...
- 关于Findbugs的一些常见报错的翻译和处理方式
在Lab5中要求使用 CheckStyle 和 FindBugs 工具对经过人工走查的 Lab4 代码进行自动的静态代码分析.在使用FindBugs的过程中,出现了一些难以理解的报错,经查阅资料,了解 ...
- 配置hadoop集群常见报错汇总
配置hadoop集群常见报错汇总 1.使用hdfs namenode -format 格式化报错找不到JAVAHOME 该问题只需在对应的窗口导入JAVAHOME即可,注意,此处为对应环境安装的JDK ...
- 超微主板BIOS常见报错代码
超微主板BIOS自检时,部分问题会在显示器上输出,debug码会在屏幕的右下角以数字和字母组合的方式显示.了解常见的报错代码含义,可以有效的帮助使用者快速判断问题原因.详细的debug码解释可以参照& ...
最新文章
- 第九次作业——测试报告与用户手册
- Android程序ToDoList增加配置项页面
- lodash(一)数组
- pytorch判断NaN
- xsy 1836 - Shop
- kafka log4j配置
- 模型预测控制c语言程序_基于数据驱动的模型预测控制
- java圆形进度条_可拖拽圆形进度条组件(支持移动端)
- jquery中的 jquery.contains(a,b)
- 论文浅尝 - ICLR2020 | Pretrained Encyclopedia: 弱监督知识预训练语言模型
- 转载:camera - 滤镜格式 (原生RGGB、RCCB、RCCC、RGB-IR和Monochrome(单色传感器))
- 「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形
- 世界三大顶级音响_世界十大名牌音响有那些
- 原生js生成气泡碰撞,随机生成颜色
- Fallback class must implement the interface annotated by @FeignClient
- 爱奇艺大数据实时分析平台的建设与实践
- 3种常见的数据库迁移同步工具对比,哪个更适合你?
- iOS客户端的title不显示解决方案
- 如我提升自我学习能力
- [转]轻松获得网通、电信、铁通IP地址分配段
热门文章
- 2019深圳杯获奖论文_我校研究生喜获2019年“深圳杯”数学建模挑战赛决赛三等奖...
- 磁盘blk_update_request: I/O error
- Auto CAD:CAD绘图设计以项目为导向,从八大角度快速设计技巧经验总结(基本绘图、图形编辑与修改、图层运用、尺寸标注、布局、CAD参数化、三视图操作、轴测图)之详细攻略
- 易鲸捷数据库创建全局递增序列和oracle的RAC模式下的全局递增序列类似
- 用html编写古诗词欣赏,品析古诗词画面描写之技巧
- c语言编程定义符号,C语言:条件编译及预定义符号知识详解
- 世界和平 - 中国国际友好城市数据集
- 数据科学 | Numpy入门教程
- python 数学公式_pythonp_word03公式编辑器,空心方阵公式,高中数学必修一公式,销售利润率公式,高一物理必修1公式...
- 分享nbsp;康奈尔大学做笔记的方法