python读取mdb文件显示_Python学习笔记(读mdb文件)

1. 读取一个文件夹里所有文件名字

① os.listdir(path)

仅当前路径下的文件名,不包括子目录中的文件

import os

s_path = r'C:\Users\Desktop\标准文件'

os.listdir(s_path)

output:['1.zip', '2.zip', '3.zip', 'Users']

② os.walk()

遍历文件夹下所有的文件,包含子目录下的文件。

上面能够满足需求,暂时不研究这个

2. 打开zip文件

import zipfile

p_file = zipfile.ZipFile('1.zip', "r")

name = p_file.namelist() # 获取比较文件列表

print(name)

p_file.extract(name[1], p_path) # 解压文件

p_file.close() # 关闭文件,必须有,释放内存

>>output: ['Users/LocalAdmin/AppData/Local/Temp/kau2a2212905r02sk-1.zip/', 'Users/LocalAdmin/AppData/Local/Temp/kau2a2212905r02sk-1.zip/kau2a2212905r02sk-1.mdb']

3. 读.mdb文件

3.1 成功运行的代码

首先放出成功运行的代码:

import pypyodbc

p_path = r'C:\Users\kau2a2122900r01sk-1.mdb'

connStr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+p_path+';PWD=007'

conn = pypyodbc.win_connect_mdb(connStr) # 链接数据库

cur = conn.cursor() # 创建游标

sql = "SELECT * FROM " + 'ActualValues_T' # 取表 ActualValues_T

print(sql)

cur.execute(sql)

alldata = cur.fetchall() # 取 ActualValues_T 所有数据

total_rows = len(alldata)

total_cols = len(alldata[0])

print("****************Begin to process\"表:ActualValues_T\"****************")

print("\"表:%s\"总行数 = %d" %('ActualValues_T', total_rows))

print("\"表:%s\"总列数 = %d" %('ActualValues_T', total_cols))

print(type(alldata))

print(alldata)

conn.close() # 关闭数据库

3.2 关于win_connet_mdb与connect

看的代码有用win_connet_mdb,也有用connect,我用两个都成功运行了

https://www.jianshu.com/p/00b53a386c2a 这篇博客里提到

大概是这样说的:

1)连本地Access数据库

connStr = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\test_db.mdb' #同样是绝对路径

conn = pypyodbc.win_connect_mdb(connStr)

# 注意这里使用的win_connect_mdb方法,如果使用connect则会出错,IM002

2)连ODBC数据库

connStr = (

r'Driver={SQL Server};'

r'Server=sqlserver;'

r'Database=testdb;'

r'UID=sa;'

r'PWD=sapassword'

)

conn = pypyodbc.connect(connStr)

作为从未接触过数据库的小白的我很是懵逼,还好代码能够成功运行。我要实现的目的是打开.mdb文件,我猜测属于应该采用win_connect_mdb吧,在此暂时不深入研究这个问题。有大神懂行还望告知,感谢。

3.3 遇到的问题

在成功之前,可是花费了我三个小时的时间,新手的我可太难了

问题1:

报错:Access Driver is not found.

解决方案:https://blog.csdn.net/victor111222/article/details/94598726

问题2:

pypyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver]常见错误 无法打开注册表项“Temporary (volatile) Ace DSN for process 0x255c Thread 0x241c DBC 0x2d58008 Jet”。')

这个真是日了够了,找了半天解决办法,最后自己发现原来是这个问题:

connStr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+p_path+';PWD = 007' #错误代码

connStr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+p_path+';PWD=007' #正确代码

知道真相的我眼泪掉下来

成功运行的结果:

SELECT * FROM ActualValues_T

****************Begin to process"表:ActualValues_T"****************

"表:ActualValues_T"总行数 = 43580

"表:ActualValues_T"总列数 = 4

[(18, 16, 0, '0'), (18, 17, 0, '0'),后面省略了]

参考链接:

https://www.jianshu.com/p/00b53a386c2a

https://www.cnblogs.com/Cong0ks/p/11039889.html

https://blog.csdn.net/LIYUANNIAN/article/details/82937350

https://www.jianshu.com/p/00b53a386c2a

4. 创建空的文件夹

import os

os.mkdir(output_path)

5. 创建空的excel

import xlsxwriter

xls = xlsxwriter.Workbook(path+"\\"+'输出.xlsx')

xls.close()

6. list 转 dataframe

>>> import pandas as pd

>>> a=[[1,2,3],[4,5,6]]

>>> pd.DataFrame(a,columns = ['a','b','c'])

a b c

0 1 2 3

1 4 5 6

原文链接:https://blog.csdn.net/Jackkkkky/article/details/108257650

你可能感兴趣的:(python读取mdb文件显示)