目录
前言
因为最近经常加班,工作内容大部分都是一些重复性的工作,总是要写一些SQL语句去更新、删除、查询,而access又只能一条一条的执行,就搞得心力憔悴。于是想起了当初学python的目的,不就是为了去做重复性的工作而解放双手吗?然后就在网上查询方法,在躺过无数个坑之后,终于皇天不负有心人,总算找到了解决办法并成功解放双手,嘿嘿!下面就将自己所用的方法整理出来方便以后自己查询,同时也希望能帮助有需求的朋友避免再次躺坑。
一、pyodbc是什么?
在开始之前我们首先要知道pyodbc是什么?能帮助我们干什么?确定是否能解决自己遇到的问题。首先pyodbc是一个Python模块,能够让你使用 ODBC 连接来自Windows, Linux, OS/X等系统中的大部分数据库。因为目前自己只用于access数据库,其他数据库也没有去过多的实验。本章实战我们就用来连接access,实现对MDB的增、删、改、查。
二、pyodbc的安装
以我自己的电脑配置为例:python版本是3.8,32位。access是2010版本
1、使用清华镜像安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyodbc --user
或者使用:pip install pyodbc 安装,反正能正常安装就好。
2、解决安装报错
我当时是用清华镜像安装,报错下面这个错误
3、解决办法
出现这个错误的原因是Python本地版本与下载的第三方模块安装包不匹配,因为清华镜像下载的是最新版本,如果报错,需要去手动下载匹配版本的模块安装包。
下载地址(https://www.lfd.uci.edu/~gohlke/pythonlibs/)
cp38是python的版本号
win32是第三方模块的版本
下载成功之后在cmd找到下载后安装包存放的位置,执行下面这句安装即可。
pip install pyodbc-4.0.32-cp38-cp38-win32.whl
如下图所示:前面几个报错是因为我下载的版本与python版本不匹配,最后一个则是下载匹配的版本之后成功安装。
三、pyodbc连接MDB执行操作的使用步骤
pyodbc的主要功能
pyodbc.connect
连接数据库xxx.cursor()创建游标cursor.execute()所有的SQL语句都用cursor.execute函数运行
cursor.rowcount
获取SQL语句执行的条数cursor.commit()提交数据cursor.close()关闭游标connect.close()断开连接
1、连接数据库
为了方便执行其他mdb数据库,这里我用了个灵活点的方式,创建一个path变量,在执行的时候输入mdb数据库的路径即可
(列如我的mdb文件存在桌面上,那么我输入C:\Users\Administrator\Desktop\测试.mdb)
# 导入库
import pyodbc
# 创建输入路径
path = input('请输入处理数据路径:')
# 连接数据库
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ path +";Uid=;Pwd=;")
# 创建游标
cursor = conn.cursor()
2、创建表
注意:
1、所有的SQL语句都用cursor.execute()函数运行
2、调用cnxn.commit()函数,否者你对数据库的所有操作将会失效!
# 导入模块
import pyodbc
# 创建路径
path = input('请输入处理数据路径:')
# 连接数据库
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ path +";Uid=;Pwd=;")
# 创建游标
cursor = conn.cursor()
# 执行SQL语句,创建表
cursor.execute("create table [测试表]")
# 提交数据
cursor.commit()
3、创建字段
access中字段类型介绍
文本型text用于输入文本或文本与数字相结合的数据货币型Currency用来存储货币值,即与货币相关的数据,占8个字节,在计算中禁止四舍五入。数字型Number用于存储数值数据,可以进行数值计算的数据,但货币除外日期/时间型Date/Time用于存储日期和(或)时间值,占8个字节。自动编号型AutoNumber默认是长整型,自动编号不能更新。是/否型Yes/No又称为布尔型类型,用于存储逻辑值(是/否、真/假、开/关),占1个字节。OLE对象型OLE Object用于使用OLE协议在其它程序中创建的OLE对象(如Word文档、Excel电子表格、图片、声音等),最多存储1GB(受磁盘空间限制)。附件 附件类型是存储数字图像等二进制文件的首选数据类型。超链接型Hyper Link用于存放通过超链接方式链接的Windows对象,如通过超链接跳转至文档、网页等。
创建字段CS1,CS2到测试表中,字段类型为文本,大小为默认(255)
# 执行SQL语句创建字段
cursor.execute("Alter Table 测试表 Add Column CS1 text,CS2 text")
# 提交数据
cursor.commit()
4、插入数据
# 执行SQL语句插入数据
cursor.execute("insert into 测试表(CS1,CS2) values ('西游记','吴承恩')")
# 提交数据
cursor.commit()
5、查询数据
完整的连接mdb数据库并查询数据代码如下:
# 执行SQL语句
cursor.execute("select CS1, CS2 from 测试表")
# 返回查询结果
row = cursor.fetchone()
# 打印查询结果
print(row)
6、更新表中的数据
# 执行SQL语句更新数据
cursor.execute("update 测试表 set cs1='三国演义'")
# 提交数据
cursor.commit()
7、删除表中数据
# 执行SQL语句删除数据
cursor.execute("delete from 测试表 where cs1='三国演义'")
# 提交数据
cursor.commit()
总结
以上就是今天要分享的内容,本文仅仅简单介绍了pyodbc的使用,而pyodbc提供了大量能使我们快速便捷地处理数据的函数和方法去处理重复性的工作,所以加油吧!少年!人生苦短,我学python!!!
版权归原作者 七月一起吹晚风吧 所有, 如有侵权,请联系我们删除。