我应该将python类用于MySQL数据库插入程序吗?

时间:2016-07-01 12:01:51

标签: python database class oop mysql-python

我创建了一个存储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是我用另一个函数制作的字典。

这是我上传的一个简单表格,但其中许多都调用了不同的词典,以确保上传正确的结果。但是我想知道是否会有更强大的方法来使用类来实现这一点。

例如,我的s​​ample_id在示例表中有一个关联的筛选属性,因此使用一个字典很容易。我有更复杂的联结表,例如存储sample_id,experiment_id和found变异的表,以及其他数据,为这个表创建一个类是一个好主意,调用一个简单的'sample'类来继承自?这样我就会知道插入的结果将用于正确的样品/实验等。

另外,使用类可以为每个属性编写规则,这样如果源电子表格由于某种原因不正确,它将不会插入到数据库中?  即:sample_id的格式为A123 / 16。因此,使用一个类它将检查第一个字符是'A',sample_id [-3]应该总是=='/'。我知道我可以把它们写成函数,但是我觉得它会占用太多的空间和时间来编写这么多'if'语句,如果它在类中存储一次那么这将会更好。

有没有人做类似的事情,使用类来传递他们的变量来测试它们是否正确,然后才能进入插入阶段并创建错误?

我是python类的新手并且理解基础知识,仍然试图掌握它们,所以在正确方向上的一点很好 - 就如何实际编写python类的代码一样有帮助这将用于制作更强大的数据库插入程序。

1 个答案:

答案 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来完成你的工作。

希望它对你有用