2016-10-11 8 views
-1

はここに私のコードです:はこれで何が起こったのかわからない: "pymysql.err.ProgrammingError:(1064 ..."

from urllib.request import urlopen 
from bs4 import BeautifulSoup as bs 
import re 
import pymysql 

resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8") 

soup = bs(resp ,"html.parser") 

listUrls = soup.findAll("a", href=re.compile("^/wiki/")) 

for url in listUrls: 

     if not re.search('\.(jpg|JPG)$', url['href']): 

      conn = pymysql.connect(
          host='127.0.0.1', 
          user='root', 
          password='', 
          db='wikiurl', 
          charset='utf8mb4' 
          ) 
      try: 
       with conn.cursor() as cursor: 

        sql = "insert into 'wikiurl'('urlname','urlhref') VALUES (%s , %s)" 
        cursor.execute(sql,(url.get_text(), "https://en.wikipedia.org" + url["href"])) 
        conn.commit() 

      finally: 
        conn.close() 

エラー:すべての

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wikiurl'('urlname','urlhref') VALUES ('Wikipedia' , ' https://en.wikipedia.org/w ' at line 1")

答えて

0

まず、私は細部に空白に細心の注意を与えることをお勧めします

これ試してみてください:。

sql = "INSERT INTO wikiurl (urlname, urlhref) VALUES (%s, %s)" 

また、テーブル名の周りに一重引用符は不要であることに注意してください。参照:MySQL Insert documentation.

編集:列名の前後に引用符は必要ありません。

0

あなたのSQL構文には何らかのエラーがありますが、それをデバッグするのは簡単ではないと思います。

mogrify(self, query, args=None)

「」 'データベースに送信される正確な文字列を返します:

は、私はあなたが上のmysql server.pymysqlマニュアルに送信され、実際のSQL文字列は、どのような印刷するには、このメソッドを使用することをお勧め execute()メソッドを呼び出します。 このメソッドは、Psycopg続くDBのAPI 2.0の拡張機能を次の ''」 は、例えば:。

あなたは

print cursor.mogrify(sql,(url.get_text(), "https://en.wikipedia.org" + url["href"]))

幸運を使用することができます!

関連する問題