2014-04-07 80 views
0

我想在Python執行此查詢:無法在SQLITE3 Python的Django的插入數據庫中的特定數據

cur=self.con.execute("insert into %s(url_id,url_name,url_title) values(%d,'%s','%s')" % (table,url_i,url_n,url_t)) 

在這裏,我將URL ID,URL名稱和URL標題中的列url_id,URL_NAME和url_title分別。 id和url被插入的很好,但不是url_title。 url_title列僅爲空白。

如果我們,只是爲了好玩,交換url_n和url_t的位置,然後問題仍然存在!我認爲這個問題可能與url_title列本身有關,但這個小實驗證明這個問題可能與url_t變量有關。

我們通過使用BeautifulSoup和Urllib2提取特定網頁的實際url標題來獲得url_t的值。這裏的功能,如果你有興趣:

def title(self,soup): 
    url_title=soup.title.string 
    return url_title 

這將返回我要在數據庫中插入鏈接標題。

我使用Django模型創建了我們打算插入值的表格。這裏是models.py文件:

class url_list(models.Model): 
    url_id=models.IntegerField()    
    url_name=models.CharField(max_length=200)  
    url_title=models.CharField(max_length=200) 
    def __unicode__(self): 
     return self.url_name 

那麼,我在做什麼錯了?

+0

你解析了什麼html(提供鏈接或相關的html代碼)?另外,在execute()調用之前檢查table,url_i,url_n,url_t變量的值。 – alecxe

+0

這是一個我自己創建的簡單的靜態HTML文檔。我有一組這樣的文檔,他們各自的url和url標題應該存儲在Db中,這不會發生。我檢查了所有的值,他們似乎是正確的,但它沒有被插入。這就是問題所在。 – user3504239

+1

爲什麼插入原始SQL而不是使用模型層? –

回答

0

我找到了解決辦法。如果你正在使用Django,請參閱布爾汗哈立德簡單的解決方案,解決了一切:

from yourapp.models import url_list 

new_url = url_list(url_id=url_i, url_name=url_n, url_title=url_t) 
new_url.save() 

但是,如果你沒有在模型或Django的(或兩者)工作,涉及到一個普通表,讓我提醒你注意url_t變量既不是字符串也不是unicode變量。當我這樣做:

type(url_t) 

我url_t的類型和它返回:

<class 'bs4.something'> 

這是我們不想要的。

我們希望:

<type 'unicode'> 

要將其轉換爲Unicode,只要做到以下幾點:

unicode(url_t) 

即使將其轉換爲Unicode後,我發現問題依然存在。然後,通過幾個實驗,我做了以下工作:

url_t=str(url_t) 
url_t=url_t[1:] 

Voila。問題解決了。

1

相反光標和原始SQL搞亂的,使用數據庫API:

from yourapp.models import url_list 

new_url = url_list(url_id=url_i, url_name=url_n, url_title=url_t) 
new_url.save() 
+0

這可能是正確的,但現在的問題是我無法導入模型!它給'沒有找到名爲XYZ的模塊' – user3504239

+0

向我們顯示您的進口報表。你是否試圖在你的views.py中導入它們? –

+0

不,我不是。我試圖在一個普通的python文件中導入模型。 – user3504239

相關問題