[英]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.