Python 使用for循环将df数据插入sqlite

Python 使用for循环将df数据插入sqlite,python,pandas,dataframe,sqlite,Python,Pandas,Dataframe,Sqlite,我想使用 sql_value = INSERT INTO sg_viewer_value(uid,channel,applied,target,result,value) VALUES (?,?,?,?,?,?) 及 dataframe表如下所示: 我想把它放到我的db表中,如下所示: 我曾多次尝试使用for循环和if条件将它们放入多个元组中,以便一次插入所有元组,但这让我很棘手,而且花费了太多时间 你能帮帮我吗 可复制代码 results = {'A': ['Gene','-','+',

我想使用

sql_value = INSERT INTO sg_viewer_value(uid,channel,applied,target,result,value) VALUES (?,?,?,?,?,?)

dataframe表如下所示:

我想把它放到我的db表中,如下所示:

我曾多次尝试使用for循环和if条件将它们放入多个元组中,以便一次插入所有元组,但这让我很棘手,而且花费了太多时间

你能帮帮我吗

可复制代码

results = {'A': ['Gene','-','+','+','-','+'],
    'A.1': ['result',25,27,40,3,4],
    'A.2': ['Mee','-','+','+','-','+'],
    'A.3': ['result',45,23,41,33,43],
    'B': ['LQP','-','+','+','-','-'],
    'B.1': ['result',5,2,80,35,44],
    'B.2': ['rRQ','+','+','+','-','-'],
    'B.3': ['result',27,27,50,36,4],
    }

您可以选择从df直接插入到sqllite:

import pandas as pd

json_data = {'A': ['Gene','-','+','+','-','+'],
    'A.1': ['result',25,27,40,3,4],
    'A.2': ['Mee','-','+','+','-','+'],
    'A.3': ['result',45,23,41,33,43],
    'B': ['LQP','-','+','+','-','-'],
    'B.1': ['result',5,2,80,35,44],
    'B.2': ['rRQ','+','+','+','-','-'],
    'B.3': ['result',27,27,50,36,4],
    }

#Load json data in df
df= pd.DataFrame.from_dict(json_data,orient="columns")


import sqlite3
#Create example db and insert df in example table
conn = sqlite3.connect('example.db')
df.to_sql('example', conn)

#Here the results
for row in cur.execute('SELECT * FROM example'):
    print(row)

(0, 'Gene', 'result', 'Mee', 'result', 'LQP', 'result', 'rRQ', 'result')
(1, '-', '25', '-', '45', '-', '5', '+', '27')
(2, '+', '27', '+', '23', '+', '2', '+', '27')
(3, '+', '40', '+', '41', '+', '80', '+', '50')
(4, '-', '3', '-', '33', '-', '35', '-', '36')
(5, '+', '4', '+', '43', '-', '44', '-', '4')

从技术上讲,这很简单,但您似乎必须在sqllite中将最初的模式从pandas修改为预期的模式

我最初计划为df和db创建表,但不断出现缩进错误,因此我将图片作为另一种方式,我得到了您想要说的内容,但问题是,我的真实数据已经以dataframe的形式存在。此外,出于某些原因,我不得不使用
sql\u值
,但谢谢你的回答。我从你的建议中发现了
,我可能会尝试使用它来制作目标名称为keyok的字典,那么你找到了解决问题的方法了吗?我问的方式一点线索也没有,所以我正在重新设计整件事以使其更有意义
import pandas as pd

json_data = {'A': ['Gene','-','+','+','-','+'],
    'A.1': ['result',25,27,40,3,4],
    'A.2': ['Mee','-','+','+','-','+'],
    'A.3': ['result',45,23,41,33,43],
    'B': ['LQP','-','+','+','-','-'],
    'B.1': ['result',5,2,80,35,44],
    'B.2': ['rRQ','+','+','+','-','-'],
    'B.3': ['result',27,27,50,36,4],
    }

#Load json data in df
df= pd.DataFrame.from_dict(json_data,orient="columns")


import sqlite3
#Create example db and insert df in example table
conn = sqlite3.connect('example.db')
df.to_sql('example', conn)

#Here the results
for row in cur.execute('SELECT * FROM example'):
    print(row)

(0, 'Gene', 'result', 'Mee', 'result', 'LQP', 'result', 'rRQ', 'result')
(1, '-', '25', '-', '45', '-', '5', '+', '27')
(2, '+', '27', '+', '23', '+', '2', '+', '27')
(3, '+', '40', '+', '41', '+', '80', '+', '50')
(4, '-', '3', '-', '33', '-', '35', '-', '36')
(5, '+', '4', '+', '43', '-', '44', '-', '4')