Python:将字符串插入Mysql数据库

时间:2016-08-24 17:57:02

标签: python mysql

我正在使用Python和Mysql。

我有一个看起来像这样的字符串:

s =" 1.xxxxxxxxx 2.xxxxxxxxx 3.xxxxxxxxx"

现在我想在db中插入这个字符串,在一行中有一行。例如

  1. XXXXXXX
  2. XXXXXXX
  3. XXXXXXX
  4. 每一行都插入一个单独的行。

    我该怎么做?

    这是调用数据库的代码

    def test(sql):
    
    cursor = db.cursor()
    try:
    
        cursor.execute(sql)
    
        db.commit()
    except:
    
        db.rollback()
    db.close()
    

    这是我用来从pdf中提取内容的代码

    def extract():
        string =convert_pdf_to_txt("sample.pdf")
        lines = list(filter(bool, string.split('1.')))
        Data = {}
        for i in range(len(lines)):
            if 'References' in lines[i]:
            Data = (lines[i + 1])
            # print (Data)
            x= "INSERT INTO `ref` (`Reference`) VALUES" + '(' + '"{}"'.format(Data) + ')'
            test(x)
    

1 个答案:

答案 0 :(得分:0)

您需要做的第一件事是正确拆分字符串。在这种情况下,如果您的示例数据是正确的,您可以通过拆分空格字符来完成此操作:

lines = string.split(' ')

现在,如果我正确理解您的代码,我们只需要插入包含字符串“References”的行。 Python为此提供了简单的语法:

for i in lines:
    if 'References' in i:
        x = 'INSERT INTO `ref` (`Reference`) '
            'VALUES ({})'.format(i)
        test(x)

这假设你的test()函数是正确的(它看起来是,但我现在没有办法测试它)。

此外,请确保您信任所插入的数据,因为您没有进行输入检查或清理。如果您只是尝试处理已经查看过的PDF以确保其格式正确,那么这可能没问题。

编辑提及另一件令我印象深刻的事情:如果在空间上拆分字符串不能正确处理输入数据,您可能需要查看更复杂的识别和拆分条目的方法。正则表达式可能有助于或可能比它们的价值更麻烦。没有更完整的测试数据集,很难说。