Использование SSMS для загрузки данных из выходной таблицы Python и их хранения в базе данных - PullRequest
0 голосов
/ 14 октября 2019

Я возился с Microsoft SQL Server Management Studio и пытался понять, как это работает. Теперь я пытаюсь создать программу, которая обновляет данные на сервере SQL с использованием Python и будет обновлять данные каждый день, поскольку я получаю данные с сайта (который обновляется каждый день). Это создаст отдельную базу данных каждый день и сделает это почти автоматически.

До сих пор я уже написал код на python, который анализирует страницу, удаляет табличные данные со страницы и выводит таблицу (в файле .csv, так как я не хотел терять данные),Более того, уже установлено соединение с базой данных, а сервер студии запускает коды Python.

import pandas as pd
from bs4 import BeautifulSoup
import requests
from pandas import DataFrame

url = 'https://www.pgcb.org.bd/PGCB/?a=pages/hourly_generation_loadshed_display.php' # url name
response = requests.get(url) 
soup = BeautifulSoup(response.text, 'html.parser') # will get the data from the url 

tables = soup.find_all('table')
table = tables[1]

def get_data ():

    headers = table.find_all('th') # tables had the tag th 
    columns = [ td.text for td in headers ]

    df = pd.DataFrame()
    rows = table.find_all('tr')
    for row in rows:
        tds = row.find_all('td')
        data = [ td.text for td in tds ]
        temp_df = pd.DataFrame([data])

        df = df.append(temp_df, sort=True).reset_index(drop=True)

    df = df.dropna(axis=1,how='all')
    df = df.dropna(axis=0,how='all')
    df.columns = columns
    df = df[:-1]
    return df

if __name__ == "__main__":

    dataresponse = get_data()
    export_csv = dataresponse.to_csv (r'D:\Work\data\test2.csv', index = None, header = True)
    print (dataresponse.to_string())

Приведенный выше код показывает код Python, который анализирует таблицу на странице, извлекает детали и сохраняет их в файл.

РЕЗУЛЬТАТ:

          Date      Time Generation Demand Shortage Loadshed        Remark
1   14-10-2019  07:00:00     7340.8   7341        0        0              
2   14-10-2019  06:00:00     7648.2   7648        0        0              
3   14-10-2019  05:00:00       7968   7968        0        0              
4   14-10-2019  04:00:00       8077   8077        0        0              
5   14-10-2019  03:00:00       8346   8346        0        0              
6   14-10-2019  02:00:00       8577   8577        0        0              
7   14-10-2019  01:00:00       9065   9065        0        0              
8   13-10-2019  24:00:00       9490   9490        0        0              
9   13-10-2019  23:00:00       9778   9778        0        0              
10  13-10-2019  22:00:00      10216  10216        0        0              
11  13-10-2019  21:00:00      10666  10666        0        0              
12  13-10-2019  20:00:00      10897  10897        0        0              
13  13-10-2019  19:30:00      11128  11128        0        0              
14  13-10-2019  19:00:00      11219  11219        0        0  Evening Peak
15  13-10-2019  18:00:00      10330  10330        0        0              
16  13-10-2019  17:00:00       8748   8748        0        0              
17  13-10-2019  16:00:00     8938.9   8939        0        0              
18  13-10-2019  15:00:00     9248.9   9249        0        0              
19  13-10-2019  14:00:00     9077.1   9077        0        0              
20  13-10-2019  13:00:00     9133.8   9134        0        0              
21  13-10-2019  12:00:00       8904   8904        0        0      Day Peak
22  13-10-2019  11:00:00       8669   8669        0        0              
23  13-10-2019  10:00:00     8495.3   8495        0        0              
24  13-10-2019  09:00:00     8167.7   8168        0        0              
25  13-10-2019  08:00:00     7684.1   7684        0        0              
26  13-10-2019  07:00:00     7508.5   7509        0        0              
[Finished in 4.2s]

Затем я установил соединение с сервером, которое по-прежнему создает некоторые проблемы (но я над этим работаю)

import pyodbc 
import time 

retry_flag = True
retry_count = 0 

while retry_flag and retry_count < 10: 
    # throw an exception, which will try to connect (if failed) after every 1 sec
    try:
        conn = pyodbc.connect ('DRIVER = {SQL Server};'#Driver Name 
                                'server = ####;' #Server Name
                                'database = ;' #database Name 
                                'uid = ###;' # Username
                                'pwd = ###;') #Password
        retry_flag = False 
        cur = connection.cursor ()
    except: 
        print ("Please retry after 1 sec")
        retry_count += 1 
        time.sleep (1)

Теперь, учитывая тот факт, что я уже настроил сервер для запуска кода Python.

EXEC sp_execute_external_script @language = N'Python', 
@script = N'

Мне нужно получить результат на сервере SQL и вывести его в табличном формате, который будет сохраняться в базе данных (и в отдельных базах данных каждый день).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...