首页 > 解决方案 > SQLalchemy-如何从 sqlite 文件中提取表?

问题描述

我想从 sqlite 文件中提取表信息。我可以在此页面
之后列出所有表名,并尝试使用会话实例上的查询方法提取表信息。但我得到了以下错误。

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: ComponentSizes [SQL: 'SELECT ComponentSizes']  

有谁知道我应该如何修改以下代码以提取指定表名的表?

class read():
    def __init__(self,path):
        engine = create_engine("sqlite:///" + sqlFile)
        inspector=inspect(engine)
        for table_name in inspector.get_table_names():
            for column in inspector.get_columns(table_name):
                #print("Column: %s" % column['name'])
                print (table_name+" : "+column['name'])

        Session = sessionmaker(bind=engine)
        self.session = Session()

    def getTable(self,name):
        table=self.session.query(name).all()
        return table


if __name__ == '__main__':

    test=read(sqlFile)
    test.getTable('ComponentSizes')

标签: pythonsqlalchemy

解决方案


你得到的错误暗示出了什么问题。您的代码正在翻译成 SQL -SELECT ComponentSizes这是不完整的。目前尚不清楚您的最终目标是什么。如果要将表格的内容提取到 CSV 中,可以这样做:

import sqlite3
import csv

con = sqlite3.connect('mydatabase.db')
outfile = open('mydump.csv', 'wb')
outcsv = csv.writer(outfile)

cursor = con.execute('select * from ComponentSizes')

# dump column titles (optional)
outcsv.writerow(x[0] for x in cursor.description)
# dump rows
outcsv.writerows(cursor.fetchall())

outfile.close()

否则,如果您希望将表的内容放入 pandas df 进行进一步分析,您可以选择这样做:

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

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

希望能帮助到你。快乐编码!


推荐阅读