首页 > 解决方案 > Python Pandas 到 sqlite

问题描述

你好我是新手我有一个问题所以我正在尝试使用flask创建一个简单的api ..

我拥有的数据是 CSV 格式,我想将它导入到 SQLlite 文件中......我已经完成了。并且可以在我加载数据并且我已经确认有数据后访问数据。我尝试让 python 来反映类..因为我需要确认它的烧瓶..

下面是我输入的。

Python: 
Base = automap_base()
Base.prepare(engine, reflect=True)

Base.classes.keys()

我什么都不知道为什么我什么也得不到,因为在我使用 pandas 加载数据之前没有设置类..

下面是我用来将数据加载到 sqlite 的代码;

Base = declarative_base()
engine = create_engine("sqlite:///countrytwo.sqlite")
Base.metadata.create_all(engine)

file_name = 'us.csv'
df=pd.read_csv(file_name)

df.to_sql('us',con=engine, index_label='id', if_exists='replace')

## then to conform theirs data I do below ##
print (engine.table_names())


所以我知道我需要先设置类,然后将数据加载到 sqlite 文件中.. 有没有人有一个很好的网站来做到这一点..

我很想有一条线索引导我找到答案,但可能不会给我答案..如果不清楚,请告诉我我可以加载更多代码。谢谢你。

标签: sqlitepythonsqlalchemy

解决方案


import sqlite3


    import pandas as pd
    import os

    class readCSVintoDB():

        def __init__(self):
            '''
            self.csvobj = csvOBJ
            self.dbobj = dbOBJ
            '''

            self.importCSVintoDB()

        def importCSVintoDB(self):

            userInput= input("enter the path of the csv file: ")
            csvfile = userInput
            df = pd.read_csv(csvfile,sep=';')

            #print("dataFrame Headers is {0}".format(df.columns))# display the Headers

            dp = (df[['date','temperaturemin','temperaturemax']])
            print(dp)

            '''
            check if DB file exist 
            if no create an empty db file
            '''
            if not(os.path.exists('./rduDB.db')):
                open('./rduDB.db','w').close()

            '''
            connect to the DB and get a connection cursor
            '''
            myConn = sqlite3.connect('./rduDB.db')
            dbCursor = myConn.cursor()

            '''
            Assuming i need to create a table of (Name,FamilyName,age,work)
            '''
            dbCreateTable = '''CREATE TABLE IF NOT EXISTS rduWeather 
                               (id INTEGER PRIMARY KEY, 
                                  Date varchar(256),
                                   TemperatureMin FLOAT,
                                   TemperatureMax FLOAT)'''

            dbCursor.execute(dbCreateTable)
            myConn.commit()


            '''
            insert data into the database
            '''
            for i in dp:
print(i)
                dbCursor.execute('''
                                  INSERT INTO  rduWeather VALUES (?,?,?,?)''', i)

            myConn.commit()

            mySelect=dbCursor.execute('''SELECT * from rduWeather WHERE (id = 10)''')
            print(list(mySelect))
            myConn.close()        


    test1 = readCSVintoDB()

推荐阅读