资讯专栏INFORMATION COLUMN

Python 获取 Access 表字段名

yimo / 1533人阅读

摘要:时效说明的旧文迁移,某些地方可能过时,最后更新时间为以下所有代码均可用。打印指定文件指定表的所有字段关于字段类型为数字,为文本,为备忘。下有更简洁的函数,只需要填路径。

时效说明: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,只需要填路径。

相关阅读

win32com下载

Python操作Access数据库基本操作步骤分析

ADO获取表的所有字段名

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()
相关链接

pyodbc的pypi主页

pyodbc的文档

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 ×

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45205.html

相关文章

  • 【thinkphp3.x】ThinkPHP/Lib/Core/Model.class.php文件分析

    摘要:模型类实现了和模式操作状态插入模型数据更新模型数据包含上面两种方式必须验证表单存在字段则验证表单值不为空则验证当前使用的扩展模型当前数据库操作对象主键名称数据表前缀模型名称数据库名称数据库配置数据表名不包含表前缀实际数据表名包含表前缀最近错 /** * ThinkPHP Model模型类 * 实现了ORM和ActiveRecords模式 * @category Think ...

    geekidentity 评论0 收藏0
  • Odoo权限管理

    摘要:在中,使用用户组来管理权限,一个特殊的用户组是员工员工组,所有的用户都属于这个组,这个组里包含一些基本的权限。字段级别设置表中的字段的访问权限。 在Odoo中,使用用户组(res.groups)来管理权限,一个特殊的用户组是 员工/员工(base.group_user) 组,所有的用户都属于这个组,这个组里包含一些基本的权限。四种权限级别(粒度越来越细):1.菜单/对象级别设置哪些人可...

    mikasa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<