2016-06-13 89 views
0

我想插入整篇文章到MySQL数据库,但它没有工作.. 我想我有一个编码问题,因为当我打印时,它开始 与'[u'。我试过一些代码,但没有奏效。内容/文章可能包含,"导致SQL文本搞砸无法插入文章到MySQL蟒蛇

这是我的代码,它提高错误输入..

k1 = str(mmhtml) 
    for filde in cur.fetchall(): 
     faliase = filde[0] 
     fpattern = filde[1] 
     furutan = filde[2] 
     fopsi = filde[3] 
     freplacer = filde[4] 
     k1 = re.sub(fpattern , freplacer, k1) 
     k2 = k1.encode('ascii') 

    Item['konten'] = k2.strip() 

    sqlinsert = "INSERT IGNORE INTO tb_hasil(title, \ 
      datee, content, author, ling) \ 
      VALUES ('%s', '%s', '%s', '%s', '%s')" % \ 
      (jdl, tgl, k2.strip() , sauto,str(response.url)) 
    try: 
     cur.execute(sqlinsert) 
    except: 
     print "error input" 

在此先感谢

+1

有在这里打球多个问题,你提供你的输入非常小的细节。看起来你正在传递一个列表作为参数(''[u''作为字符串格式化的结果)。对于初学者,**从不使用字符串格式**传递值(这里是'%'运算符)。你根本不应该养成它的习惯。而是使用占位符/准备好的语句。从'%s'格式化程序中去掉单引号,然后分别将参数元组传递给'''''''''''''''''''''''''''''将'%s'格式化程序的单引号分开并传递给'cur.execute()':'cur.execute(sqlinsert,(jdl,tgl,...))。这样你就不必担心逃脱自己。 –

+0

这不会修复你的代码,但是通常是更安全的代码。 –

+0

@IljaEverilä谢谢你的回复,我试图实现你的建议..我是新的python,所以我做了基于我发现的例子 – insecte

回答

0

嗨哪个库你使用?

据我所知大多数库实现DB-API公共。所以你可以通过防止sql注入的参数化来发送数据。

我使用Python中oursql和语法是:

curs.execute('SELECT * FROM `some_table` WHERE `col1` = ? AND `col2` = ?', 
(42, -3)) 

所以你用替换值是多少?并通过参数的元组

//curs.execute("... INTO Values (?, ?, ?)", (1,2,3)) 
+0

我使用mysqldb .. – insecte

+0

它也遵循DB-API规则: 只有%s比?例如//curs.execute(“... INTO值(%s,%s,%s)”,(1,2,3)) – cinatic