Python工具箱系列(二十八)
Posted shanxihualu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python工具箱系列(二十八)相关的知识,希望对你有一定的参考价值。
Access也是微软Office套餐中的经典产品。虽然在许多人眼里,Access已经是上古时代的产品,但实际上它一直深受好评,并且稳定发展。之所以在许多IT人士眼里,Access不值一提的主要原因恰恰也是它深受非专业人士喜欢的原因:专供非IT人士自用的数据库。
Access生命力强的原因如下:
◆Access聚焦于“自用软件开发”,既然是“自用”,那当然是省却不必要的功能,尽量满足快速开发的那部分框架最好。所以Access对软件的开发性能要求并不高,导致升级动力不强,功能非常稳定。也就是说Access的使用者是自己开发软件给自己用的,个人色彩浓厚,自己种地自己吃,使用越简便越好,技术路线越固定越好。Access功能太强太复杂(比如升级成共享版)反而会造成开发的不方便,违背了软件的初衷。而其它数据库管理系统是对标企业级应用,开发和使用这些软件的用户群体又非常的专业,因此竞争之外需要不断升级改造追求更多的特性,而Access不必如此。
◆Access的使用群体很大很固定也很低调。据估算企业用户就超过14万家,但是曝光率不高,原因是这部分使用群体主要是非IT专业的高级办公软件使用者,是完成业务为目标,并没有上网讨论技术的动力与需求。
◆Access使用的门槛非常低,尤其是可以vba编程和用窗体报表快速做出图形界面是非常关键的两点。在工作实践中,人们发现Access对于非专业编程人员最友好的,是当你需要在代码中写sql语句的时候,可以用它的查询设计先设计好并校验正确,再转到sql视图就可以拷贝出合格的sql语句,这一点确实非常棒。
数据库排行榜的2022年最新排名中,Access仍然在前十之列如下图所示:
Access具体使用,本文不再赘述,主要谈谈如何使用python来操作Access。由于Access对平台有一定的依赖性,所以相关的库较少。一般通过两个库来操作Access:
◆pyodbc。通过上古的ODBC技术来操作Access数据库
◆win32com。这个库的操作方法模拟VBA的风格,与传统的数据库操作差距有些大,不推荐
使用pyodbc访问Access还是需要一些配置工作量的。首先安装相关库。
pip install pyodbc
检测当前ODBC环境是否完备。
>>> import pyodbc >>> [x for x in pyodbc.drivers() if x.startswith(\'Microsoft\')] []
返回为空,就说明没有安装相关的驱动程序。需要下载相关驱动并且自行安装。随后创建一个空白的Access文件,假设其文件名为:d:/demo.accdb,相关的示例代码如下:
import random from faker import Faker import pyodbc # 数据库文件 accessfile = r\'D:\\demo.accdb\' # 最高薪资(单位为K) maxsalary = 30 def fakedata(maxtimes): # 模拟数据。人名+薪资 fake = Faker(\'zh_CN\') data_total = [[fake.name(), random.randint(0, maxsalary)] for x in range(maxtimes)] return data_total def operator(filename): fakesalary = fakedata(100) connection = pyodbc.connect( r\'Driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=\'+filename+\';\') connection.autocommit = True # 创建工资表 create_table_sql = \'\'\'create table salary_table ( id autoincrement primary key, name varchar(255) , salary int ) \'\'\' # 插入语句 insert_table_sql = \'\'\'insert into salary_table(name, salary) values (?, ?) \'\'\' # 查询语句 select_public_servant_sql = \'\'\'select * from salary_table where salary > 10 \'\'\' with connection.cursor() as cursor: # DDL cursor.execute(create_table_sql) # 插入数据 for info in fakesalary: name = info[0] pay = info[1] cursor.execute(insert_table_sql, (name, pay)) # 查询之 cursor.execute(select_public_servant_sql) results = cursor.fetchall() for row in results: print(row) operator(accessfile)
上述代码将创建表格salary_table,并且将模拟的数据保存到表中。同时,在控制台返回查询的结果。后继的操作与操作其它数据库类似。
以上是关于Python工具箱系列(二十八)的主要内容,如果未能解决你的问题,请参考以下文章
Python从入门到精通五万六千字对Python基础知识做一个了结吧!(二十八)值得收藏
Python从入门到精通五万六千字对Python基础知识做一个了结吧!(二十八)值得收藏