【问题标题】:PYTHON/MySQL: Check if Record exist. If exist don't insert, if not exist then insertPYTHON/MySQL:检查记录是否存在。如果存在不插入,如果不存在则插入
【发布时间】:2016-01-06 02:12:40
【问题描述】:

首先检查网站的链接,然后获取所有链接。 我需要帮助检查mysql,如果链接已经存在,如果存在则不要插入它们,如果其中一些不存在,则插入它们。

  created_at = time.strftime("%Y/%d/%m/ %H:%M:%S")
afdelings = 'it-support'

url = 'www.careerjet.dk/sog/jobs?s=L%C3%A6rling&l=Danmark'
r  = requests.get("http://" +url)
data = r.text
soup = BeautifulSoup(data, "html.parser")
side1 = "http://www.careerjet.dk/"
cur = connect.cursor()

for link in soup.select('.title > a'):
  linkfrom = side1 + (link.get('href'))
  f = string.split(linkfrom, '\n')
  for line in f:
    if ("""SELECT count(*) from jobtest WHERE link = %s""", (line)) == 0:
      cur.execute("""INSERT INTO jobtest (afdeling, dato, link) VALUES (%s, %s, %s)""", (afdelings, created_at, line))

with connect:
  connect.commit()

connect.close()

非常感谢任何帮助。

【问题讨论】:

    标签: mysql python-2.7


    【解决方案1】:

    你需要先执行选择。

    类似的东西

     created_at = time.strftime("%Y/%d/%m/ %H:%M:%S")
     afdelings = 'it-support'
    
     url = 'www.careerjet.dk/sog/jobs?s=L%C3%A6rling&l=Danmark'
     r  = requests.get("http://" +url)
     data = r.text
     soup = BeautifulSoup(data, "html.parser")
     side1 = "http://www.careerjet.dk/"
     cur = connect.cursor()
    
     for link in soup.select('.title > a'):
       linkfrom = side1 + (link.get('href'))
       f = string.split(linkfrom, '\n')
       for line in f: 
    
         #-------ADDED CODE
         data_tmp = """SELECT count(*) from jobtest WHERE link = %s""", (line)
         data_tmp = cur.fetchall()
         #-------END ADDED CODE
    
         if (data_tmp == 0 ) :
           cur.execute("""INSERT INTO jobtest (afdeling, dato, link) VALUES (%s, %s, %s)""", (afdelings, created_at, line))
    
     with connect:
       connect.commit()
    
     connect.close()
    

    【讨论】:

    • 它出现了“NameError: name 'cursor' is not defined。”然后我尝试了“cur.fetchall(data_tmp)”,它带有错误:“fetchall()正好需要1个参数(2个给定)”。谢谢你的帮助顺便说一句。你有什么想法吗?
    • 好吧,我把 data_tmp = cur.execute("""SELECT count(*) from jobtest WHERE link = %s""", (line)) 但仍然没有数据插入到 mysql 中。
    • 可能是因为该链接已根据您的要求插入。 data_tmp 变量的结果是什么?
    • 当我打印 "%s" % data_tmp: 我得到 (0L,)
    • data_tmp = cursor.fetchall() 更改为data_tmp = cur.fetchall()
    猜你喜欢
    • 2013-03-31
    • 2012-05-09
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2012-03-28
    相关资源
    最近更新 更多