簡體   English   中英

無法在Sqlite3 Python Django中的數據庫中插入特定數據

[英]Unable to insert specific data in database in Sqlite3 Python Django

我想在Python中執行以下查詢:

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_name和url_title列中插入url id,url名稱和url標題。 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

這將返回要插入數據庫的URL標題。

我創建了表,打算使用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

那么,我在做什么錯呢?

使用數據庫api而不是弄亂游標和原始SQL:

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,請參閱解決所有問題的Burhan Khalid簡單解決方案:

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:]

瞧。 問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM