Проблема с подключением к базе данных с Mysql в Python - PullRequest
0 голосов
/ 06 августа 2020

Я написал программу на языке python, чтобы очистить некоторые данные с сайта, а затем вставить их в базу данных. Я использую mysql .connector для подключения к базе данных. когда я запускал свой код, все было правильно перед вставкой данных. python дал мне ошибку. пожалуйста, помогите мне решить эту проблему. спасибо

требования для запуска:

  • re библиотека
  • bs4 библиотека
  • mysql .connector библиотека
  • запрашивает библиотеку

Мой Python код:

import re
import bs4
import mysql.connector
import requests
from os import system, name 

def clear(): 
    if name == 'nt': 
        _ = system('cls')  
    else: 
        _ = system('clear')

clear()
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password=""
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE ny_db")
mydb.commit()

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="",
  database="ny_db"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE Home (ba INT, bds INT, price INT)")

for x in range(5):
    page_link = 'https://www.rew.ca/properties/areas/toronto-on/page/' +  str(x)
    request = requests.get(page_link).text
    bs44 = bs4.BeautifulSoup(request , 'html.parser')
    ba_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
    for i in ba_:
        re_for_ba = re.findall(r'.*</li>\n<li>(.+)ba.*' , str(i))
        for r in re_for_ba:
            r = str(r)
            r = r.strip()
            r = int(r)
            sql = "INSERT INTO Home (ba) VALUES (%s)"
            val = (r)
            mycursor.execute(sql, val)
            mydb.commit()

    bd_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
    for w in bd_:
        re_for_bd = re.findall(r'.*\"l-pipedlist\"><li>(.*)bd' , str(w))
        for e in re_for_bd:
            e = str(e)
            e = e.strip()
            e = int(e)
            sql = "INSERT INTO Home (bds) VALUES (%s)"
            val = (e)
            mycursor.execute(sql, val)
            mydb.commit()
            
    price_ = bs44.find_all('div' , attrs = {'class':'displaypanel-title hidden-xs'})
    for t in price_:
        re_for_price = re.findall(r'.*<div class=\"displaypanel-title hidden-xs\">\n\$(.*)\n</div>' , str(t))
        for q in re_for_price:
            q = str(q)
            q = q.strip()
            q = q.split(',')
            q = ''.join(q)
            q = int(q)
            sql = "INSERT INTO Home (price) VALUES (%s)"
            val = (q)
            mycursor.execute(sql, val)
            mydb.commit()
print('DONE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
            

1 Ответ

0 голосов
/ 06 августа 2020

Спасибо nacho Моя проблема решена! Это мой правильный код:

import re
import bs4
import mysql.connector
import requests
from os import system, name 

def clear(): 
    if name == 'nt': 
        _ = system('cls')  
    else: 
        _ = system('clear')

clear()
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password=""
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE ny_db")
mydb.commit()

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="",
  database="ny_db"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE Home (ba INT, bds INT, price INT)")

for x in range(5):
    page_link = 'https://www.rew.ca/properties/areas/toronto-on/page/' +  str(x)
    request = requests.get(page_link).text
    bs44 = bs4.BeautifulSoup(request , 'html.parser')
    ba_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
    for i in ba_:
        re_for_ba = re.findall(r'.*</li>\n<li>(.+)ba.*' , str(i))
        for r in re_for_ba:
            r = str(r)
            r = r.strip()
            r = int(r)
            sql = "INSERT INTO Home (ba) VALUES (%s)"
            val = (r,)
            mycursor.execute(sql, val)
            mydb.commit()

    bd_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
    for w in bd_:
        re_for_bd = re.findall(r'.*\"l-pipedlist\"><li>(.*)bd' , str(w))
        for e in re_for_bd:
            e = str(e)
            e = e.strip()
            e = int(e)
            sql = "INSERT INTO Home (bds) VALUES (%s)"
            val = (e,)
            mycursor.execute(sql, val)
            mydb.commit()
            
    price_ = bs44.find_all('div' , attrs = {'class':'displaypanel-title hidden-xs'})
    for t in price_:
        re_for_price = re.findall(r'.*<div class=\"displaypanel-title hidden-xs\">\n\$(.*)\n</div>' , str(t))
        for q in re_for_price:
            q = str(q)
            q = q.strip()
            q = q.split(',')
            q = ''.join(q)
            q = int(q)
            sql = "INSERT INTO Home (price) VALUES (%s)"
            val = (q,)
            mycursor.execute(sql, val)
            mydb.commit()
print('DONE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
            
...