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,并且將模擬的資料保存到表中,同時,在控制臺回傳查詢的結果,后繼的操作與操作其它資料庫類似,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547866.html
標籤:Python