Python 使用pandas查询表名

Python 使用pandas查询表名,python,sql,pandas,io,Python,Sql,Pandas,Io,我正在尝试使用Pandas.read\u sql将数据库中的表名读入列表。 我尝试了联机找到的不同SQL查询: cnxn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=' + str(self.file_selected)+';Uid=Admin;Pwd=; ') # sql = "SELECT * FROM SYS.TABLES" # tried this - also an error sq

我正在尝试使用Pandas.read\u sql将数据库中的表名读入列表。 我尝试了联机找到的不同SQL查询:

     cnxn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=' + str(self.file_selected)+';Uid=Admin;Pwd=; ')
  #  sql = "SELECT * FROM SYS.TABLES" # tried this - also an error

  sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='database_name.MDB'"
    self.TableNames = pd.io.sql.read_sql(sql, cnxn)
    cnxn.close()
但是我得到一个错误,它找不到文件数据库\u name.INFORMATION\u SCHEMA.TABLES


sql查询应该使用什么?

在MS Access中,可以使用数据库的系统表MSysObjects检索数据库中的元数据。下面是检索所有表名的DML调用:

选择MSysObjects.Name 来自MsysObjects 其中MSysObjects.Type=1 按MSysObjects.Name排序; 但是,默认情况下,这将不适用于外部ODBC调用(如Python中的调用),因为不允许使用权限。要解决,考虑两条路线:

授予管理员用户权限

在MSAccess.exe GUI中,打开数据库并在独立模块中运行VBA子例程,该模块只需运行一次:

公共子赠款许可 作为字符串的Dim strSQL strSQL=将MSysObjects上的SELECT授予Admin; CurrentProject.Connection.Execute strSQL 端接头 完成后,在pandas read_sql调用中运行上述查询

保存的表

在MS Access.exe GUI程序中,运行以下生成表查询:

选择MSysObjects.Name 进入数据库表 来自MsysObjects 其中MSysObjects.Type=1 按MSysObjects.Name排序; 然后在Python中,请参阅新表:

cnxn = pyodbc.connect('DRIVER={{Microsoft Access Driver (*.mdb)}};DBQ=' + \
                      '{};Uid=Admin;Pwd=;'.format(str(self.file_selected)))

sql = "SELECT * DBTables"
self.TableNames = pd.io.sql.read_sql(sql, cnxn)
cnxn.close()

在MS Access中没有信息模式这样的东西。。。