Python 使用pandas查询表名
我正在尝试使用Pandas.read\u sql将数据库中的表名读入列表。 我尝试了联机找到的不同SQL查询: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
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中没有信息模式这样的东西。。。