2016-08-24 245 views
1

我正在Python中使用Mysql。Python:將字符串插入到Mysql數據庫中

我有一個字符串,它看起來是這樣的:

S =「1.xxxxxxxxx 2.xxxxxxxxx 3.xxxxxxxxx」

現在我想在一行中有一條線插入此字符串分貝。例如

  1. XXXXXXX
  2. XXXXXXX
  3. XXXXXXX

每一行被插入到一個獨立的行。

我該怎麼做?

這是撥打電話到數據庫的代碼

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) 
+0

顯示您的代碼。很難說沒有代碼出什麼問題 –

+0

@joelgoldstick:我編輯了我的問題 –

+0

因此,'print(Data)'顯示'「1.xxxxxxxxx 2.xxxxxxxxx 3.xxxxxxxxx」「,這是否正確? – Hackerman

回答

0

你需要做的第一件事是正確的拆分字符串。在這種情況下,如果你的示例數據是正確的,你可以通過拆分在空格字符實現這一點:

lines = string.split(' ') 

現在,如果我正確地理解你的代碼,我們需要插入只包含字符串的行「參考」。 Python提供方便的語法如下:

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

這是假設你的測試()函數是正確的(它看起來是,但我沒有馬上測試它的一種方式)。

此外,請確保您信任您插入的數據,因爲您沒有進行輸入檢查或清理。如果你只是試圖處理已經查看過的PDF文件,以確保格式正確,那麼這很可能是正確的。

編輯提到一件讓我感到震驚的事情:如果在空間上拆分字符串不能正確處理輸入數據,您可能需要查看更復雜的方式來識別和拆分條目。正則表達式可能有助於或可能比他們的價值更麻煩。沒有更完整的測試數據集就很難說。