我创建了一个存储NGS测序结果的数据库。它由17个表组成,用于存储所有信息。结果存储在电子表格中,我使用python(2.7)解析数据并存储在变量中,然后使用python包mysqldb将数据插入数据库。我主要使用函数来获取变量中需要的信息,然后编写一个循环,我在其中调用此函数,然后插入'try:'语句。这是一个简单的例子:
def sample_processer(file):
my_file = open(file, 'r+')
samples = []
for line in my_file:
...get info...
samples.append(line[0])
return(samples)
samples = sample_processor('path/to/file')
for sample in samples:
try:
sql = "samsql = "INSERT IGNORE INTO sample(sample_id, diagnosis, screening) VALUES ("
samsql = samsql + "'"+sample+"'," +sam_screen_dict.get(sample)+"')"
except e:
db.rollback()
print("Something went wrong inserting data into the sample table: %s" %(e))
* sam_screen_dict是我用另一个函数制作的字典。
这是我上传的一个简单表格,但其中许多都调用了不同的词典,以确保上传正确的结果。但是我想知道是否会有更强大的方法来使用类来实现这一点。
例如,我的sample_id在示例表中有一个关联的筛选属性,因此使用一个字典很容易。我有更复杂的联结表,例如存储sample_id,experiment_id和found变异的表,以及其他数据,为这个表创建一个类是一个好主意,调用一个简单的'sample'类来继承自?这样我就会知道插入的结果将用于正确的样品/实验等。
另外,使用类可以为每个属性编写规则,这样如果源电子表格由于某种原因不正确,它将不会插入到数据库中? 即:sample_id的格式为A123 / 16。因此,使用一个类它将检查第一个字符是'A',sample_id [-3]应该总是=='/'。我知道我可以把它们写成函数,但是我觉得它会占用太多的空间和时间来编写这么多'if'语句,如果它在类中存储一次那么这将会更好。
有没有人做类似的事情,使用类来传递他们的变量来测试它们是否正确,然后才能进入插入阶段并创建错误?
我是python类的新手并且理解基础知识,仍然试图掌握它们,所以在正确方向上的一点很好 - 就如何实际编写python类的代码一样有帮助这将用于制作更强大的数据库插入程序。
答案 0 :(得分:0)
17表示你可以使用大约17个班级。 使用简单的脚本。 webpy.db https://github.com/webpy/webpy/blob/master/web/db.py只修改一些代码。 然后你可以使用webpy api:http://webpy.org/docs/0.3/api#web.db来完成你的工作。
希望它对你有用