无法在Sqlite3 Python Django中的数据库中插入特定数据

时间:2014-04-07 18:41:34

标签: python django sqlite

我想在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 name和url title。 id和url插入得很好但不是url_title。 url_title列只是空白。

如果我们只是为了好玩,交换url_n和url_t的位置,那么问题仍然存在!我认为问题可能与url_title列本身有关,但是这个小实验证明问题可能与url_t变量有关。

我们通过使用BeautifulSoup和Urllib2提取特定网页的实际网址标题来获取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

那么,我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用数据库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()

答案 1 :(得分:0)

我找到了解决方案。如果您使用的是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:]

瞧。问题解决了。