我对sql几乎一无所知,我试图使用pandas的read_sql方法加载一个db文件。
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是什么呢?
table_name
3zwtqj6y1#
您可以查询数据库中包含的表:
SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name
如果所需的数据没有存储在单个表中,则可以编写一个查询来将所需的表连接在一起
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。
tables
2条答案
按热度按时间3zwtqj6y1#
您可以查询数据库中包含的表:
如果所需的数据没有存储在单个表中,则可以编写一个查询来将所需的表连接在一起
mccptt672#
要使用Pandas快速浏览数据库,可以使用以下代码:
样本输出:
注意:不要忘记打印
tables
。