python3.7操作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 驱动器安装成功。

如果感觉上面的操作比较麻烦,可以直接下载小编已经处理过的版本。

注意:

下面是经过小编测试过的代码

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,则默认打开的是后者。

剩下的就需要你自行发挥了,小编今天就先介绍到这了,后期我们会分享更多的资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值