最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球热点!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 randomfrom faker import Fakerimport pyodbc# 数据库文件accessfile = r"D:\demo.accdb"# 最高薪资(单位为K)maxsalary = 30def fakedata(maxtimes):    # 模拟数据。人名+薪资    fake = Faker("zh_CN")    data_total = [[fake.name(), random.randint(0, maxsalary)]                  for x in range(maxtimes)]    return data_totaldef 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,并且将模拟的数据保存到表中。同时,在控制台返回查询的结果。后继的操作与操作其它数据库类似。

关键词: