1. 程式人生 > 程式設計 >Python3.7 pyodbc完美配置訪問access資料庫

Python3.7 pyodbc完美配置訪問access資料庫

環境 win2008 r2 64為系統

python3.7、pyodbc

安裝好python3.7以後,那麼就需要安裝pyodbc了。

資料庫連線

資料庫連線網上大致有兩種方法,一種是使用pyodbc,另一種是使用win32com.client,測試了很多遍,最終只有pyodbc成功,而且比較好用,所以這裡只介紹這種方法

工具庫安裝

在此基礎上安裝pyodbc工具庫,在cmd視窗執行如下語句安裝

pip install pyodbc

如果安裝了anaconda也可以使用conda install pyodbc

分享給大家供大家參考,具體如下:

檢驗是否可以正常連線資料庫檢查是否有一個Microsoft Access ODBC驅動程式可用於你的Python環境(在Windows上)的方法:

>>> import pyodbc
>>>[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]

如果你看到一個空列表,那麼您正在執行64位Python,並且需要安裝64位版本的“ACE”驅動程式。如果您只看到['Microsoft Access Driver (*.mdb)']並且需要使用.accdb檔案,那麼您需要安裝32位版本的“ACE”驅動程式

pyodbc.InterfaceError: ('IM002','[IM002] [Microsoft][ODBC 驅動程式管理器] 未發

現資料來源名稱並且未指定預設驅動程式 (0) (SQLDriverConnect)')

例如上面這樣的提示就需要安裝64位的ODBC 驅動器:

64位ODBC驅動器的下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=13255
直接安裝會報錯,所以我們需要修改一下檔案AccessDatabaseEngine_X64.exe,先對其進行解壓,然後開啟AccessDatabaseEngine_X64資料夾,有一個AceRedist.msi檔案。用Orca軟體將AceRedist.msi開啟,找到找到LaunchCondition裡面的BLOCKINSTALLATION,刪除那一行資料並進行儲存。然後再執行AceRedist.msi,就可以把64位的ODBC 驅動器安裝成功。

如果感覺上面的操作比較麻煩,可以直接下載我們小編已經處理過的版本。

下載地址:https://www.jb51.net/softs/695978.html

注意:

1、不用配置資料來源
2、Orcad的下載地址 https://www.jb51.net/softs/16217.html

下面是經過我們小編測試過的程式碼

access是2000的,理論上2010也可以。

import pyodbc 
 
DBfile = r"F:\python\caiji.mdb" # 資料庫檔案需要帶路徑
print(DBfile)
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb,*.accdb)};DBQ="+ DBfile +";Uid=;Pwd=;") 
cursor = conn.cursor() 
SQL = "SELECT * from sites;"
for row in cursor.execute(SQL): 
 print(row) 
cursor.close() 
conn.close()

如果可以打印出結果

完整測試程式碼

# -*-coding:utf-8-*-
import pyodbc
 
# 連線資料庫(不需要配置資料來源),connect()函式建立並返回一個 Connection 物件
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=.\data\goods.mdb')
# cursor()使用該連線建立(並返回)一個遊標或類遊標的物件
crsr = cnxn.cursor()
 
# 列印資料庫goods.mdb中的所有表的表名
print('`````````````` goods ``````````````')
for table_info in crsr.tables(tableType='TABLE'):
 print(table_info.table_name)
 
 
l = crsr.execute("SELECT * from goods WHERE goodsId='0001'")# [('0001','扇葉',20,'A公司','B公司',2000,2009)]
 
rows = crsr.execute("SELECT currentStock from goods") # 返回的是一個元組
for item in rows:
 print(item)
 
l = crsr.execute("UPDATE users SET username='lind' WHERE password='123456'")
print(crsr.rowcount) # 想知道資料修改和刪除時,到底影響了多少條記錄,這個時候你可以使用cursor.rowcount的返回值。
 
# 修改資料庫中int型別的值
value = 10
SQL = "UPDATE goods " \
 "SET lowestStock=" + str(value) + " " \
 "WHERE goodsId='0005'"
 
# 刪除表users
crsr.execute("DROP TABLE users")
# 建立新表 users
crsr.execute('CREATE TABLE users (login VARCHAR(8),userid INT,projid INT)')
# 給表中插入新資料
crsr.execute("INSERT INTO users VALUES('Linda',211,151)")
 
''''''
# 更新資料
crsr.execute("UPDATE users SET projid=1 WHERE userid=211")
 
# 刪除行資料
crsr.execute("DELETE FROM goods WHERE goodNum='0001'")
 
# 列印查詢的結果
for row in crsr.execute("SELECT * from users"):
 print(row)
 
 
# 提交資料(只有提交之後,所有的操作才會對實際的物理表格產生影響)
crsr.commit()
crsr.close()
cnxn.close()

補充

# -*- coding: utf-8 -*-
# 功能:python連線access2010資料庫(.accdb)
 
import pyodbc
 
DBfile = r"C:\Users\lenovo\Desktop\test.accdb" # 資料庫檔案
conn = pyodbc.connect(r"Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")
 
 
cursor = conn.cursor()
SQL = "SELECT * from table1;"
for row in cursor.execute(SQL):
  print row.col1
cursor.close()

注意:win7系統是64位,office安裝的是32位,AccessDatabaseEngine安裝的是32位。

在win7 64位系統開啟ODBC資料來源管理器:

要檢視32位ODBC驅動:執行 C:/Windows/SysWOW64/odbcad32.exe

要檢視64位ODBC驅動:執行 C:/WINDOWS/system32/odbcad32.exe或者控制面板—管理工具—資料來源(ODBC)

如果只執行odbcad32.exe,則預設開啟的是後者。

剩下的就需要你自行發揮了,我們小編今天就先介紹到這了,後期我們會分享更多的資料