PyMySQL как сделать insert?

109
10 мая 2021, 09:40

Вот код моего парсера

    #Парсер v2
import requests
from bs4 import BeautifulSoup
import pymysql.cursors

def get_html(url):
    r = requests.get(url)
    return r.text
def get_data(html):
    soup = BeautifulSoup(html, 'lxml')
    title=soup.find('h1').text
    date=soup.find('span',{'class':'news_date'}).text
    text=soup.find('p').text
    textp=soup.find_all('p')
    print(title)
    print(date)
    print(text)
    print(str(textp)) 
def main():
    url = 'https://www.zakon.kz/4979616-kazahstan-spustya-12-let-vyigral-'
    (get_data(get_html(url)))
if __name__ == '__main__':
    main()

И мне надо чтобы данные с парсера автоматически записывались в БД которая PyMySQL Вот код моего подключения к PyMySQL

    connection = pymysql.connect(host='localhost',
                             user='root',
                             password='',
                             db='pars',
                             charset='utf8',
                             autocommit=True)
    print ("connect successful!!")

Как реализовать чтобы данные с парсинга автоматически делали insert

Answer 1

Если я все правильно понял. Таблица в базе данных 'myTable'

def ADD(title, date, text, textp):
    connection = pymysql.connect(host='localhost',user='root',password='',db='pars',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
    try:
        with connection.cursor() as cursor:
            sql = "INSERT INTO myTable (`title`, `date`, `text`, `textp`) VALUES (%s, %s, %s, %s)"
            cursor.execute(sql, (title, date, text, textp))
        connection.commit()
    finally:
        connection.close()
Answer 2

Нашел способ реализации

connection = pymysql.connect(host='localhost',
                             user='root',
                             password='',
                             db='pars',
                             charset='utf8',
                             autocommit=True)
print ("connect successful!!")

url = 'https://www.zakon.kz/4979527-shestnadtsatiletniy-kibersportsmen.html'
array = get_data(get_html(url))
sql = "insert into gag (`title`, `text`, `time`,`textp`) values (%s,%s,%s,%s)"
cursor=connection.cursor()
title =array[0]
text=array[1]
date=str(array[2])
textp=array[3]


cursor.execute(sql,(str(title),str(text),str(date),str(textp)))
print ("Connect successful!")
READ ALSO
поиск со стеммером

поиск со стеммером

вопрос в тормозах при нескольких словах одновременно

111
Как объединить (просуммировать) данные в столбце по id?

Как объединить (просуммировать) данные в столбце по id?

У меня есть таблица со следующими данными:

91
Laravel, получение body params action-а

Laravel, получение body params action-а

Хочу написать пакет для автогенерации сваггера, или что-то вроде того

113
Открытие в браузере ответа от cURL (php)

Открытие в браузере ответа от cURL (php)

В наличии: браузер с js, сервер с php и cURL

119