import pypyodbc
def open_con():
path = r'I:\\OtherCode\\test.mdb' # 数据库文件
conn_str = 'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=' + path # 绝对路径
conn = pypyodbc.win_connect_mdb(conn_str)
cursor = conn.cursor()
return conn, cursor
def close_con(conn, cursor):
conn.close()
cursor.close()
# 基本操作
sql = ''
conn, cursor = open_con()
cursor.execute(sql)
# 获取数据,column_data是一个二维数组
column_data = []
for row in cursor:
column_data.append(row)
# 获取所有的列名,column_name是一个键值对集合
column_name = []
for i in range(0, cursor.description.__len__()):
dic = dict()
dic["name"] = cursor.description[i][0]
column_name.append(dic)
# 获取行中指定列名的值
for row in cursor:
table_name = row["芯片名称"]
close_con(conn, cursor)
注意事项:
1. 使用时发现.accdb格式的文件无法连接
2. Access数据库中使用模糊查询条件为 [column_name] like '*字符串*'
,但在Python中使用pypyodbc查询时要写成[column_name] like '%字符串%'
,否则查不到结果
疑问:遍历cursor时row直接加入已数组,此时row看起来是个只包含值的数组,但row又可以以列名获取指定列的值,不像是个简单的数组,何解?