一、安裝第三方庫(kù) pyodbc
Pip install pyodbc
二、檢驗(yàn)是否可以正常連接數(shù)據(jù)庫(kù)
- >>> import pyodbc
- >>> [x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
如果你看到一個(gè)空列表,那么您正在運(yùn)行64位Python,并且需要安裝64位版本的“ACE”驅(qū)動(dòng)程序。如果您只看到['Microsoft Access Driver (*.mdb)']并且需要使用.accdb文件,那么您需要安裝32位版本的“ACE”驅(qū)動(dòng)程序
三、安裝64位的ODBC 驅(qū)動(dòng)器:
64位ODBC驅(qū)動(dòng)器的下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=13255
直接安裝會(huì)報(bào)錯(cuò),所以我們需要修改一下文件AccessDatabaseEngine_X64.exe,先對(duì)其進(jìn)行解壓,然后打開(kāi)AccessDatabaseEngine_X64文件夾,有一個(gè)AceRedist.msi文件。
用Orca軟件將AceRedist.msi打開(kāi),找到找到LaunchCondition里面的BLOCKINSTALLATION,刪除那一行數(shù)據(jù)并進(jìn)行保存。
然后再運(yùn)行AceRedist.msi,就可以把64位的ODBC 驅(qū)動(dòng)器安裝成功。
注意:
1、不用配置數(shù)據(jù)源
2、Orcad的下載地址 http://www.technipages.com/downloads/OrcaMSI.zip
- # -*-coding:utf-8-*-
- import pyodbc
- # 連接數(shù)據(jù)庫(kù)(不需要配置數(shù)據(jù)源),connect()函數(shù)創(chuàng)建并返回一個(gè) Connection 對(duì)象
- cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\data\goods.mdb')
- # cursor()使用該連接創(chuàng)建(并返回)一個(gè)游標(biāo)或類(lèi)游標(biāo)的對(duì)象
- crsr = cnxn.cursor()
- # 打印數(shù)據(jù)庫(kù)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") # 返回的是一個(gè)元組
- for item in rows:
- print(item)
- l = crsr.execute("UPDATE users SET username='lind' WHERE password='123456'")
- print(crsr.rowcount) # 想知道數(shù)據(jù)修改和刪除時(shí),到底影響了多少條記錄,這個(gè)時(shí)候你可以使用cursor.rowcount的返回值。
- # 修改數(shù)據(jù)庫(kù)中int類(lèi)型的值
- value = 10
- SQL = "UPDATE goods " \
- "SET lowestStock=" + str(value) + " " \
- "WHERE goodsId='0005'"
- # 刪除表users
- crsr.execute("DROP TABLE users")
- # 創(chuàng)建新表 users
- crsr.execute('CREATE TABLE users (login VARCHAR(8),userid INT, projid INT)')
- # 給表中插入新數(shù)據(jù)
- crsr.execute("INSERT INTO users VALUES('Linda',211,151)")
- ''''''
- # 更新數(shù)據(jù)
- crsr.execute("UPDATE users SET projid=1 WHERE userid=211")
- # 刪除行數(shù)據(jù)
- crsr.execute("DELETE FROM goods WHERE goodNum='0001'")
- # 打印查詢(xún)的結(jié)果
- for row in crsr.execute("SELECT * from users"):
- print(row)
- # 提交數(shù)據(jù)(只有提交之后,所有的操作才會(huì)對(duì)實(shí)際的物理表格產(chǎn)生影響)
- crsr.commit()
- crsr.close()
- cnxn.close()
聯(lián)系客服