cursor.execute()未将行上载到sqlite数据库

时间:2019-06-25 07:24:11

标签: sql python-3.x sqlite database-cursor

我构建了一个刮板,该刮板保存到.csv文件,现在正尝试使用IF语句将该.csv文件中的行保存到sqlite3数据库中,但无法正常工作。我尝试过用多种方法设置值的格式,但是一无所获。

每当IF语句为True时都会打印“匹配”,但是该行不会添加到sqlite数据库中。调用cur.fetchall()/ one()/ etc会导致返回“ None”。

db = sqlite3.connect(':memory:')
cur = db.cursor()
cur.execute("DROP TABLE IF EXISTS jobs_table")
cur.execute('''CREATE TABLE IF NOT EXISTS
                                   jobs_table(id TEXT,
                                              date TEXT,
                                              company TEXT, 
                                              position TEXT,
                                              tags TEXT,
                                              description TEXT,
                                              url TEXT)''')

skills = ('python')
for row in csv_data:
    if skills in row.get('description').lower():
        print('')
        print('Match!')
        cur.execute("INSERT INTO jobs_table(id,  
                                            date,  
                                            company,  
                                            position,  
                                            tags,  
                                            description,  
                                            url) VALUES(:id,   
                                                        :epoch,   
                                                        :date,   
                                                        :company,   
                                                        :position,   
                                                        :tags,   
                                                        :description,   
                                                        :url)", row)

我认为问题出在我的cur.execute()函数中,但我不知道应该如何运行它。有参加者吗?

1 个答案:

答案 0 :(得分:2)

如果您是在override fun onClick(clicked:View){ /* some operation (e.g your log)*/ /* the regular onClick functionality */ } 正常之后立即致电cur.fetchone()来获得cur.execute()(或None代表[])。您需要先执行查询才能获得结果,例如cur.fetchall()