scif_yar: (Default)
[personal profile] scif_yar
Вот работал ты до прошлых лет с powershell. Все есть объект, а что не объект - то массив объектов или еще какая сложносочиненная дрянь. Ну, ок.
А теперь берем postgre. В нем можно объявить тип объекта - массив,
textfield4_arrtextD4 text ARRAY,
textfield5_arrnumsE5 integer ARRAY

Как бы ничего особенного, ну массив.
Но нихера. Вот взял ты psycopg2 (отдельно надо ставить, замечу), сделал fetchall() и получил - просто длинную строку. Внутри которой может быть массив. А может и не быть. И дальше как знаете.
https://www.datacamp.com/tutorial/tutorial-postgresql-python

Прямо в том же тексте говорят про https://www.sqlalchemy.org/
и не говорят про pandas https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html
https://datagy.io/pandas-read-sql/
https://stackoverflow.com/questions/37235512/pandas-parsing-converting-a-column-as-date-after-importing-from-read-sql
https://sparkbyexamples.com/pandas/pandas-read-sql-query-or-table/
А вроде и ничего такой этот пандас.

UPD
print(type()) # окей, class 'list'
print(len()) # окей длина
print(type(Чототам[0])) # Она оно чо - class 'tuple' а не str или List
Кортежи (tuple) в Python – это те же списки за одним исключением. Кортежи неизменяемые структуры данных.
БЛДЖ. А оно таки список, то есть кортеж. БЛДЖ. Два дня ныл, 5 минут посмотрел на тип

Date: 2023-10-08 01:49 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
Повершелл прибит гвоздями к .NET рантайму и существует внутри него. По сути, это питон-шелл (или джаваскрипт-шелл). И типизация у тебя богатейшая.
У постгреса типы есть - ну какие есть, других Момжиан не завез. Можешь похоливарить про разницу между JSON и JSONB. Но самое главное - таблицы в постгресе жестко типизированные.
psycopg2 дает тебе сериализированное представление. Которое, как считается, ты дальше сам раскроешь, потому что знаешь модель данных. "А если не знаю" - не вариант, ты это, скажи, что не знаешь, что у тебя в typedef struct написано, какие там поля каких типов.
Если ты не хочешь десериализовать ручками, тебе нужен ORM. По поводу ORM сломано много копий - идеальный ORM принципиально невозможно, потому что 3НФ базы ни фига не ложится на объектную модель. Поэтому берешь какой-то и юзаешь как-то. Если у тебя простая модель данных, тебе, примерно, поровну.
Дальше применительно к sqlalchemy у тебя есть два варианта.
1. Ты используешь его на низком уровне, по сути, для параметризации кверей (которые ты по факту руками пишешь) и для сериализации-десериализации.
2. Ты можешь его использовать на высоком уровне, по сути, чтобы работать с базой почти как с массивом объектов. Это в чем-то прельстивее (сам так не делал), но если абстракция в (1) течет достаточно редко, то здесь шансы повыше будут.

Только вот скажи мне, минхерц, а зачем тебе массив в постгресе? Обычно в простых задачах он особо не нужен. Не хочешь ли ты модель данных к 3НФ сначала привести?

Date: 2023-10-08 02:42 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
3-НФ (сам такой) уверенно говорит: а ты сделай отдельную таблицу для ссылок.
Хотя в данном конкретном случае денормализация может быть оправдана, если ссылки тебе важны только и исключительно как параметры объекта и за его пределами никаких запросов ты делать не будешь.

Date: 2023-10-08 02:43 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
Ах, чуть не забыл, ненавижу тебя, Фасимба.

Profile

scif_yar: (Default)
scif_yar

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28 293031   

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 15th, 2026 05:34 pm
Powered by Dreamwidth Studios