Я работаю над SQL, чтобы Excel Report Generator. Frondend -это ручья, и как он работает, вы вставляете свой запрос в коробку запроса на потоковом листе с заголовком -листы, он выполняет запрос и генерирует рабочую книгу Excel с листом. Вы можете иметь несколько запросов в нескольких -листовых блоках, но проблема в том, что я работаю со сложными запросами, и запросы обычно включают в себя кучу сделанных таблиц температуры, а затем данные из этих временных таблиц извлекаются в электронную таблицу Excel. Мой код работает на Localhost в Microsoft SQL Server Management Studio 18, но как только я подключаюсь к серверу, мое приложение возвращает ошибку с надписью: < /p>
Отчет об генерировании ошибок: этот объект результата не возвращает строки. Он был закрыт автоматически.
Это может быть проблема с подключением, я устраняю устранение с помощью CHATGPT и говорит, что это, вероятно, проблема с подключением, потому что SSMS строго с тем, как температурные таблицы обрабатываются в соединении при использовании SQLalchemy и Pandas Read.sql () , но я не уверен.import pandas as pd
from sqlalchemy import create_engine, text
import time
import re
from pyexcelerate import Workbook
def parse_query_blocks(query):
parts = re.split(r"--\s*sheet:\s*(.+)", query)
blocks = []
for i in range(1, len(parts), 2):
sheet_name = parts.strip()
sql_block = parts[i + 1].strip()
queries = [q.strip() for q in sql_block.split(";") if q.strip()]
blocks.append((sheet_name, queries))
return blocks
for sheet_name, queries in sheet_query_blocks:
final_select = None
for q in reversed(queries):
if q.strip().lower().startswith("select"):
final_select = q
break
if not final_select:
raise ValueError(f"No SELECT query found for sheet: {sheet_name}")
non_selects = [q for q in queries if q != final_select]
all_setup_queries.extend(non_selects)
sheet_selects.append((sheet_name, final_select))
wb = Workbook()
with engine.connect() as conn:
try:
if all_setup_queries:
for q in all_setup_queries:
conn.execute(text(q))
print(f"[{round(time.time() - start_time, 2)}s] Executed all setup queries")
for sheet_name, select_query in sheet_selects:
print(f"[{round(time.time() - start_time, 2)}s] Running SELECT for: {sheet_name}")
df = pd.read_sql(text(select_query), conn)
df.fillna("NULL", inplace=True)
data = [df.columns.tolist()] + df.values.tolist()
wb.new_sheet(sheet_name[:31], data=data)
print(f"[{round(time.time() - start_time, 2)}s] Wrote sheet: {sheet_name} ({len(df)} rows)")
except Exception as e:
print(f" Error generating report: {e}")
raise e
wb.save(output_file)
print(f"[{round(time.time() - start_time, 2)}s] All sheets exported to {output_file}")
< /code>
Редактировать: < /p>
Я могу поделиться запросом, который я использовал. К сожалению, в настоящее время я не могу повторить ошибку, потому что у меня нет разрешений на подключение к среде SQL Server, где изначально возникла проблема. Когда я запускаю один и тот же запрос локально на Localhost \ sqlexpress, он работает отлично-без ошибок, а вывод электронной таблицы генерируется правильно. < /P>
Вот запрос:-< /p>
--sheet: s1
DROP TABLE IF EXISTS #temp_orders;
DROP TABLE IF EXISTS #temp_discounts;
DROP TABLE IF EXISTS #temp_customers;
SELECT TOP 1000
item_id,
Customer_ID,
increment_id,
price,
grand_total,
discount_amount,
payment_method,
category_name_1,
created_at,
FY
INTO #temp_orders
FROM [Kaggletest].[dbo].[test_table]
WHERE ISNUMERIC(price) = 1 AND ISNUMERIC(grand_total) = 1;
SELECT
item_id,
Customer_ID,
increment_id,
discount_amount,
price
INTO #temp_discounts
FROM #temp_orders
WHERE discount_amount > 0;
SELECT
Customer_ID,
COUNT(*) AS total_orders,
SUM(grand_total) AS total_spent,
AVG(price) AS avg_price
INTO #temp_customers
FROM #temp_orders
GROUP BY Customer_ID;
Я работаю над SQL, чтобы Excel Report Generator. Frondend -это ручья, и как он работает, вы вставляете свой запрос в коробку запроса на потоковом листе с заголовком -листы, он выполняет запрос и генерирует рабочую книгу Excel с листом. Вы можете иметь несколько запросов в нескольких -листовых блоках, но проблема в том, что я работаю со сложными запросами, и запросы обычно включают в себя кучу сделанных таблиц температуры, а затем данные из этих временных таблиц извлекаются в электронную таблицу Excel. Мой код работает на Localhost в Microsoft SQL Server Management Studio 18, но как только я подключаюсь к серверу, мое приложение возвращает ошибку с надписью: < /p>
Отчет об генерировании ошибок: этот объект результата не возвращает строки. Он был закрыт автоматически.
Это может быть проблема с подключением, я устраняю устранение с помощью CHATGPT и говорит, что это, вероятно, проблема с подключением, потому что SSMS строго с тем, как температурные таблицы обрабатываются в соединении при использовании SQLalchemy и Pandas Read.sql () , но я не уверен.import pandas as pd from sqlalchemy import create_engine, text import time import re from pyexcelerate import Workbook
def parse_query_blocks(query):
parts = re.split(r"--\s*sheet:\s*(.+)", query) blocks = [] for i in range(1, len(parts), 2): sheet_name = parts[i].strip() sql_block = parts[i + 1].strip() queries = [q.strip() for q in sql_block.split(";") if q.strip()] blocks.append((sheet_name, queries)) return blocks
for sheet_name, queries in sheet_query_blocks: final_select = None for q in reversed(queries): if q.strip().lower().startswith("select"): final_select = q break if not final_select: raise ValueError(f"No SELECT query found for sheet: {sheet_name}")
non_selects = [q for q in queries if q != final_select] all_setup_queries.extend(non_selects) sheet_selects.append((sheet_name, final_select))
wb = Workbook()
with engine.connect() as conn:
try:
if all_setup_queries: for q in all_setup_queries: conn.execute(text(q))
print(f"[{round(time.time() - start_time, 2)}s] ✅ Executed all setup queries")
for sheet_name, select_query in sheet_selects: print(f"[{round(time.time() - start_time, 2)}s] 🔍 Running SELECT for: {sheet_name}") df = pd.read_sql(text(select_query), conn) df.fillna("NULL", inplace=True)
data = [df.columns.tolist()] + df.values.tolist() wb.new_sheet(sheet_name[:31], data=data) print(f"[{round(time.time() - start_time, 2)}s] 📄 Wrote sheet: {sheet_name} ({len(df)} rows)")
except Exception as e: print(f"❌ Error generating report: {e}") raise e
wb.save(output_file) print(f"[{round(time.time() - start_time, 2)}s] ✅ All sheets exported to {output_file}") < /code> Редактировать: < /p> Я могу поделиться запросом, который я использовал. К сожалению, в настоящее время я не могу повторить ошибку, потому что у меня нет разрешений на подключение к среде SQL Server, где изначально возникла проблема. Когда я запускаю один и тот же запрос локально на Localhost \ sqlexpress, он работает отлично-без ошибок, а вывод электронной таблицы генерируется правильно. < /P> Вот запрос:-< /p>
--sheet: s1 DROP TABLE IF EXISTS #temp_orders; DROP TABLE IF EXISTS #temp_discounts; DROP TABLE IF EXISTS #temp_customers;
SELECT TOP 1000 item_id, Customer_ID, increment_id, price, grand_total, discount_amount, payment_method, category_name_1, created_at, FY INTO #temp_orders FROM [Kaggletest].[dbo].[test_table] WHERE ISNUMERIC(price) = 1 AND ISNUMERIC(grand_total) = 1;
SELECT item_id, Customer_ID, increment_id, discount_amount, price INTO #temp_discounts FROM #temp_orders WHERE discount_amount > 0;
SELECT Customer_ID, COUNT(*) AS total_orders, SUM(grand_total) AS total_spent, AVG(price) AS avg_price INTO #temp_customers FROM #temp_orders GROUP BY Customer_ID;
Я работаю над SQL, чтобы Excel Report Generator. Frondend -это ручья, и как он работает, вы вставляете свой запрос в коробку запроса на потоковом листе с заголовком -листы, он выполняет запрос и генерирует рабочую книгу Excel с листом. Вы можете...
Есть ли способ сделать процесс регистрации типов для динамики сериализации, то есть не необходимость утомительно записать ] для каждого типа.
До сих пор я пытался получить все типы по желаемым (и их свойствам с помощью Entry Propective). во время...
Я попытался поговорить с ИИ, и он сказал мне, что можно сгенерировать классы котлин и предоставить некоторые шаги для настройки проекта.
plugins {
kotlin( jvm ) version 1.9.0
id( org.mapstruct ) version 1.5.5.Final
kotlin( kapt ) version 1.9.0...
Я перехожу из newtonsoft.json в System.text.json (STJ) в своем проекте Unity из -за его сообщенных преимуществ: более легкий след и лучшая производительность с помощью генерации источника, что должно дополнять компиляцию AOT IL2CPP. Тем не менее, я...
Я перехожу из newtonsoft.json в System.text.json (STJ) в своем проекте Unity из -за его сообщенных преимуществ: более легкий след и лучшая производительность с помощью генерации источника, что должно дополнять компиляцию AOT IL2CPP. Тем не менее, я...