国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用pyodbc訪問數(shù)據(jù)庫操作方法詳解

2020-02-15 22:12:40
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了Python使用pyodbc訪問數(shù)據(jù)庫操作方法。

數(shù)據(jù)庫連接

數(shù)據(jù)庫連接網(wǎng)上大致有兩種方法,一種是使用pyodbc,另一種是使用win32com.client,測試了很多遍,最終只有pyodbc成功,而且比較好用,所以這里只介紹這種方法

工具庫安裝

在此基礎上安裝pyodbc工具庫,在cmd窗口執(zhí)行如下語句安裝

pip install pyodbc

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

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

檢驗是否可以正常連接數(shù)據(jù)庫檢查是否有一個Microsoft Access ODBC驅動程序可用于你的Python環(huán)境(在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”驅動程序

安裝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,刪除那一行數(shù)據(jù)并進行保存。然后再運行AceRedist.msi,就可以把64位的ODBC 驅動器安裝成功。

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

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

注意:

1、不用配置數(shù)據(jù)源
2、Orcad的下載地址 https://www.jb51.net/softs/16217.html

下面是經過武林站長站小編測試過的代碼

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

import pyodbc DBfile = r"F:/python/caiji.mdb" # 數(shù)據(jù)庫文件需要帶路徑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# 連接數(shù)據(jù)庫(不需要配置數(shù)據(jù)源),connect()函數(shù)創(chuàng)建并返回一個 Connection 對象cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=./data/goods.mdb')# cursor()使用該連接創(chuàng)建(并返回)一個游標或類游標的對象crsr = cnxn.cursor()# 打印數(shù)據(jù)庫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) # 想知道數(shù)據(jù)修改和刪除時,到底影響了多少條記錄,這個時候你可以使用cursor.rowcount的返回值。# 修改數(shù)據(jù)庫中int類型的值value = 10SQL = "UPDATE goods " /   "SET lowestStock=" + str(value) + " " /   "WHERE goodsId='0005'"# 刪除表userscrsr.execute("DROP TABLE users")# 創(chuàng)建新表 userscrsr.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'")# 打印查詢的結果for row in crsr.execute("SELECT * from users"):  print(row)# 提交數(shù)據(jù)(只有提交之后,所有的操作才會對實際的物理表格產生影響)crsr.commit()crsr.close()cnxn.close()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乾安县| 稷山县| 教育| 义马市| 共和县| 太原市| 巴彦淖尔市| 枝江市| 安新县| 阜阳市| 安丘市| 江达县| 霍城县| 湖北省| 抚松县| 台中市| 平陆县| 东海县| 红桥区| 延边| 建阳市| 兴业县| 望都县| 扎鲁特旗| 旬阳县| 句容市| 宁化县| 黄石市| 南康市| 定结县| 龙陵县| 荔浦县| 肥西县| 宁城县| 镇安县| 孟村| 育儿| 林甸县| 伊春市| 定兴县| 崇文区|