环境 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 = 10sql = "UPDATE goods " \ "SET lowestStock=" + str(value) + " " \ "WHERE goodsID='0005'"# 删除表userscrsr.execute("DROP table users")# 创建新表 userscrsr.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 pyodbcDBfile = 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.col1cursor.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,则默认打开的是后者。
剩下的就需要你自行发挥了,我们小编今天就先介绍到这了,后期我们会分享更多的资料
总结以上是内存溢出为你收集整理的Python3.7 pyodbc完美配置访问access数据库全部内容,希望文章能够帮你解决Python3.7 pyodbc完美配置访问access数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)