Действительно ли там кто-либо альтернативен к хранимым процедурам? [закрытый]

Используйте read_csv для DataFrame и затем pivot с cumcount для счетчика для нового индекса:

import pandas as pd

temp=u"""Name,Kamath
Age,23
Sex,Male
Company,ACC
Vehicle,Car
Name,Ram
Age,32
Sex,Male
Company,CCA
Vehicle,Bike
Name,Reena
Age,26
Sex,Female
Company,BARC
Vehicle,Cycle"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.txt'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a','b'])
print (df)
          a       b
0      Name  Kamath
1       Age      23
2       Sex    Male
3   Company     ACC
4   Vehicle     Car
5      Name     Ram
6       Age      32
7       Sex    Male
8   Company     CCA
9   Vehicle    Bike
10     Name   Reena
11      Age      26
12      Sex  Female
13  Company    BARC
14  Vehicle   Cycle
df = pd.pivot(index=df.groupby('a').cumcount(),
              columns=df['a'],
              values=df['b'])
print (df)
a Age Company    Name     Sex Vehicle
0  23     ACC  Kamath    Male     Car
1  32     CCA     Ram    Male    Bike
2  26    BARC   Reena  Female   Cycle

9
задан dotjoe 21 October 2009 в 21:26
поделиться

7 ответов

Хранимые процедуры являются местом для помещения кода (SQL), который выполняется на базе данных, таким образом, я понимаю вопрос означать

"есть ли какой-либо другой способ упаковать код, который работает на базе данных?"

Существует несколько ответов:

  • Нет ничего иного, что является вполне тем же как хранимой процедурой, но существуют альтернативы, которые Вы могли бы рассмотреть.
  • Вы могли записать весь свой SQL как строки в Вашем клиентском коде (Java или безотносительно)
    • Это имеет различные проблемы (потеря инкапсуляции, плотного соединения-> более трудное обслуживание), однако, и не является хорошей идеей.
  • Вы могли использовать ORM, такой как NHibernate, который вставляет слой между Вашей клиентской логикой и базой данных. ORM генерирует SQL для выполнения на базе данных. С ORM более трудно выразить сложную бизнес-логику, чем в хранимой процедуре (широкое обобщение!).
  • Своего рода социальная гостиница должна определить Ваш собственный уровень доступа к данным (DAL) в Java (или watever, который Вы используете), и разделите его от основной части клиентского кода (отдельные классы / пространства имен / и т.д.), так, чтобы Ваш клиент выполнил вызовы к DAL, и DAL интерпретирует их и отправляет SQL в базу данных, возвращая результаты базы данных назад клиенту.
14
ответ дан 4 December 2019 в 07:05
поделиться

Да. можно использовать динамический sql, но мне лично нравятся хранимые процедуры лучше.

1) При использовании SQL Server MS он генерирует план запросов, который должен позволить хранимой процедуре выполниться быстрее, чем простой динамический sql.

2) Это может быть легче более эффективное для исправления ошибки в хранимой процедуре, expecially если вызовы приложения что процедура в нескольких местах.

3) Я нахожу, что хорошо инкапсулировать логику базы данных в базе данных, а не во встроенном sql или файле конфигурации приложения.

4) Создание хранимой процедуры в базу данных позволит SQL-серверу делать некоторый синтаксис и проверки проверки во время проектирования.

7
ответ дан 4 December 2019 в 07:05
поделиться

Будьте в спящем режиме объектный/реляционный сервис персистентности.

Хранимая процедура является подпрограммой в системе реляционных баз данных.

Не то же самое.

Если Вы хотите, чтобы альтернатива Была в спящем режиме, можно проверить на iBatis для Spring

4
ответ дан 4 December 2019 в 07:05
поделиться

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

3
ответ дан 4 December 2019 в 07:05
поделиться

Хм, мне кажется, что очевидной альтернативой хранимым процедурам является написание кода приложения. Вместо того, чтобы, скажем, писать процедуру магазина для проводки дебета каждый раз при отправке кредита, вы можете написать код приложения, который записывает и то, и другое.

Возможно, я здесь слишком упрощаюсь или упускаю суть вопроса.

0
ответ дан 4 December 2019 в 07:05
поделиться

хранимая процедура является подпрограммой доступен для приложений, обращающихся к система реляционных баз данных. Хранится процедуры (иногда называемые процедурой, sproc, StoPro или SP) на самом деле хранящиеся в базе данных данные словарь.

Типичное использование хранимых процедур. включить проверку данных (интегрированный в базу данных) или контроль доступа механизмы. Кроме того, хранится процедуры используются для консолидации и централизовать логику, которая была изначально реализовано в приложениях. Большой или сложная обработка, которая может потребовать выполнение нескольких SQL операторы перемещаются в сохраненные процедуры, и все приложения вызывают только процедуры.

Хранимые процедуры похожи на определяемые пользователем функции (UDF). В главное отличие в том, что UDF могут быть используется как любое другое выражение в Операторы SQL, в то время как сохраненные процедуры должны быть вызваны с помощью Оператор CALL

.. из Википедии

Я думаю, вам нужно прочитать эту статью и переосмыслить свой вопрос. Hibernate не имеет ничего общего с сохраненными процессами.

2
ответ дан 4 December 2019 в 07:05
поделиться

Было бы лучше, если бы вы сказали, почему ищете альтернативы, а что насчет хранимых процедур вам не нравится?

Некоторые базы данных (например, PostgreSQL) также позволяют писать хранимые процедуры в разные языки. Так что, если вы действительно хотите, вы можете написать их на Python или Java или тому подобное, вместо SQL.

1
ответ дан 4 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: