SQL, чтобы Excel Generation Generation Application не работает с серверным соединениемPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQL, чтобы Excel Generation Generation Application не работает с серверным соединением

Сообщение Anonymous »

Я работаю над 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

def generate_dynamic_reports(engine, sheet_query_blocks, output_file):
start_time = time.time()

all_setup_queries = []
sheet_selects = []

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;

SELECT * FROM #temp_orders;

--sheet: s2
SELECT * FROM #temp_discounts;

--sheet: s3
SELECT * FROM #temp_customers;



Подробнее здесь: https://stackoverflow.com/questions/796 ... connection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SQL, чтобы Excel Generation Generation Application не работает с серверным соединением
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как сделать System.text.json Generation Generation Dynamic
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Поддерживает ли Mapstruct Generation Kotlin Generation?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • System.text.json Generation Generation Calling Gettypeinfo чрезмерно, медленнее, чем Newtonsoft.json в Unity 6
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • System.text.json Generation Generation Calling Gettypeinfo чрезмерно, медленнее, чем Newtonsoft.json в Unity 6
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»