Я возился с 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 и вывести его в табличном формате, который будет сохраняться в базе данных (и в отдельных базах данных каждый день).