如何在pandas sql中找到表名?

cl25kdpy  于 2023-04-28  发布在  其他
关注(0)|答案(2)|浏览(197)

我对sql几乎一无所知,我试图使用pandas的read_sql方法加载一个db文件。

import sqlite3
import pandas as pd
# Create your connection.
cnx = sqlite3.connect('file.db')

df = pd.read_sql_query("SELECT * FROM table_name", cnx)

但是我如何找出db文件中的表的table_name是什么呢?

3zwtqj6y

3zwtqj6y1#

您可以查询数据库中包含的表:

SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name

如果所需的数据没有存储在单个表中,则可以编写一个查询来将所需的表连接在一起

mccptt67

mccptt672#

要使用Pandas快速浏览数据库,可以使用以下代码:

tables = pd.read_sql_query("SELECT * FROM sqlite_schema WHERE type='table'", cnx)
for tbl in tables['name']:
    print(f"{'*'*10} {tbl} {'*'*10}")
    columns = pd.read_sql_query(f"PRAGMA table_info({tbl})", cnx)
    print(columns, end='\n\n')
    data = pd.read_sql_query(f"SELECT * FROM {tbl} LIMIT 5", cnx)
    print(data, end='\n\n')

样本输出:

********** UserConstraint **********
   cid  name          type  notnull dflt_value  pk
0    0    ID       INTEGER        1       None   1
1    1  Name  VARCHAR(255)        0       None   0

   ID     Name
0   0     <NA>
1   1  INSTCAP
2   2  LUMPINV
3   3      INV
4   4     COST

********** Cap_New **********
   cid            name      type  notnull dflt_value  pk
0    0              ID   INTEGER        1       None   1
1    1        Scenario  SMALLINT        0       None   0
2    2         Process  SMALLINT        0       None   0
3    3          Period  SMALLINT        0       None   0
4    4          Region  SMALLINT        0       None   0
5    5         Vintage  SMALLINT        0       None   0
6    6  UserConstraint  SMALLINT        0       None   0
7    7              PV     FLOAT        0       None   0

   ID  Scenario  Process  Period  Region  Vintage  UserConstraint            PV
0   1         1      211       1       1        1               1    296.071141
1   2         1      212       1       1        1               1     11.770909
2   3         1      343       1       1        1               1  11851.674497
3   4         1      949       2       1        2               1     43.000000
4   5         1      691       2       1        2               1      5.488316

注意:不要忘记打印tables

相关问题