Python 获取 Access 表字段名
时效说明:walker 的旧文迁移,某些地方可能过时,最后更新时间为 2015-09-25
以下所有代码 Python2.7、Python3.4 均可用。
win32.com
# encoding: utf-8
# author: walker
# date: 2015-09-25
# summary: 打印指定access文件、指定表的所有字段
import win32com.client
def PrintColumns_win32com(pathfile, tablename):
conn = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=' + pathfile + ';'
#DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=' + pathfile + ';'
conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs.Cursorlocation = 3
sql = 'SELECT TOP 1 * FROM ' + tablename
print(sql)
rs.Open(sql, conn)
for i in range(0, rs.Fields.Count):
print('%s - %d - %d' % (rs.Fields[i].Name, rs.Fields[i].Type, rs.Fields[i].DefinedSize))
conn.Close()
关于字段类型(Type):3为数字,202为文本,203为备忘。Windows 下有更简洁的函数 pypyodbc.win_connect_mdb,只需要填路径。
相关阅读
pyodbc
# encoding: utf-8
# author: walker
# date: 2015-09-25
# summary: 打印指定access文件、指定表的所有字段
import pyodbc
def PrintColumns_pyodbc(pathfile, tablename):
connStr = r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;' % pathfile
print('connStr:' + connStr)
conn = pyodbc.connect(connStr)
cur = conn.cursor()
for row in cur.columns(table=tablename):
print(row.column_name)
cur.close()
conn.close()
相关链接
pypyodbc
# encoding: utf-8
# author: walker
# date: 2015-09-25
# summary: 打印指定access文件、指定表的所有字段
import pypyodbc
def PrintColumns_pypyodbc(pathfile, tablename):
connStr = r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;' % pathfile
print('connStr:' + connStr)
pypyodbc.lowercase = False #是否将字段名转为小写
conn = pypyodbc.connect(connStr)
cur = conn.cursor()
cur.execute('SELECT TOP 1 * FROM ' + tablename)
cnt = 0
for tup in cur.description:
print(tup[0])
cnt += 1
print('cnt:' + str(cnt))
cur.close()
conn.close()
相关链接
- pypyodbc的pypi主页
- 未找到官方文档
pyodbc 与 pypyodbc 取值的区别
- 在 select 指定字段时
row[idx] | row.field | row['field'] | row.get('field') | |
---|---|---|---|---|
pyodbc | √ | √ | × | × |
pypyodbc | √ | × | √ | √ |
- 在 select * 时
row[idx] | row.field | row['field'] | row.get('field') | |
---|---|---|---|---|
pyodbc | √ | × | × | × |
pypyodbc | √ | × | √ | √ |
qbit snap
开箱即用,拿走不谢。
262 声望
276 粉丝
推荐阅读
Postman 发送 RSA 签名请求(qbit)
前言Postman 版本 10.13.6qbit 将 RSAForPostman 压缩拷贝到了码云便于国内访问Postman 脚本示例Pre-request Script {代码...} Postman 内置库官方文档:[链接] {代码...} 本文出自 qbit snap
qbit阅读 137
滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?
良许赞 4阅读 2.3k
又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。
良许赞 5阅读 1.8k
FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。
二毛erma0赞 2阅读 10.2k评论 3
Python之如何优雅的重试
为了避免偶尔的网络连接失败,需要加上重试机制,那么最简单的形式就是在对应的代码片段加一个循环,循环体里使用异常捕获,连接成功时退出循环,否则就重复执行相关逻辑,此时修改之后的函数f如下
Harpsichord1207赞 3阅读 7.3k
Linux终端居然也可以做文件浏览器?
大家好,我是良许。在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在【笑脸】最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码。当然我不懂 Java 后端,因此就写写自己擅长的 Shell 脚本。但...
良许赞 1阅读 2.1k
基于 EKS Fargate 搭建微服务性能分析系统
近期 Amazon Fargate 在中国区正式落地,因 Fargate 使用 Serverless 架构,更加适合对性能要求不敏感的服务使用,Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具,Pyroscope 的服务端为无状态服务且性...
亚马逊云开发者阅读 7.8k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。