利用python的pyodbc连接access 数据库 & pyodbc的基本用法

一、安装第三方库 pyodbc

Pip 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”驱动程序

 

三、安装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 驱动器安装成功。

 

注意:

1、不用配置数据源

2、Orcad的下载地址 http://www.technipages.com/downloads/OrcaMSI.zip

 

四、测试代码
# -*-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()

猜你喜欢

转载自blog.csdn.net/growth_path_/article/details/80748734