У меня есть следующая таблица в супабазе, где установлено расширение postgis:
create table
public.prueba (
id smallint generated by default as identity not null,
name text null,
age smallint null,
created_at timestamp without time zone null,
punto geography null,
constraint prueba_pkey primary key (id)
) tablespace pg_default;
который относится к этому классу SQLalchemy:
class Prueba(Base):
__tablename__ = "prueba"
id: Mapped[int] = mapped_column(
sa.SmallInteger, sa.Identity(start=1), primary_key=True
)
name: Mapped[str] = mapped_column(sa.String(50), nullable=False)
age: Mapped[int] = mapped_column(sa.Integer, nullable=False)
created_at: Mapped[datetime] = mapped_column(sa.DateTime, default=datetime.now)
punto: Mapped[WKBElement] = mapped_column(
Geometry(geometry_type="POINT", srid=4326, spatial_index=True)
)
Я использую geoalchemy2, как предложено в этом вопросе, но каждый раз, когда я пытаюсь добавить данные в эту таблицу, код терпит неудачу.
Код, который я использую для добавления данные следующие:
prueba = Prueba(
name="Prueba_2",
age=5,
created_at=datetime.now(),
punto="POINT(-1.0 1.0)",
)
with Session() as session:
session.add(prueba)
session.commit()
Я добавляю данные таким образом, потому что следую руководству по geoalchemy2 orm, но при запуске получаю следующее исключение:
File "c:...\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) function st_geomfromewkt(unknown) does not exist
LINE 1: ...a_2', 5, '2024-12-28T18:49:07.130429'::timestamp, ST_GeomFro...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
[SQL: INSERT INTO prueba (name, age, created_at, punto) VALUES (%(name)s, %(age)s, %(created_at)s, ST_GeomFromEWKT(%(punto)s)) RETURNING prueba.id]
[parameters: {'name': 'Prueba_2', 'age': 5, 'created_at': datetime.datetime(2024, 12, 28, 18, 49, 7, 130429), 'punto': 'POINT(-1.0 1.0)'}]
(Background on this error at: https://sqlalche.me/e/20/f405)
Я предполагаю, что ошибка связана с тем, как я определил класс, потому что та же ошибка появляется, когда я оставляю значение punto пустым.
Я также попробовал использовать подход, аналогичный описанному в этом руководстве, и попытался добавить данные с помощью этого кода:
punto=WKBElement("POINT(10 25)", srid=4326),
выдает другую ошибку:
File "c:\...\back\main.py", line 16, in main
punto=WKBElement("POINT(10 25)", srid=4326),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\...\.venv\Lib\site-packages\geoalchemy2\elements.py", line 201, in __init__
header = binascii.unhexlify(data[:18])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
binascii.Error: Non-hexadecimal digit found
Подробнее здесь: https://stackoverflow.com/questions/793 ... sqlalchemy
Как добавить данные в столбец геометрии в супабазе с помощью SQLalchemy? ⇐ Python
Программы на Python
1735408942
Anonymous
У меня есть следующая таблица в супабазе, где установлено расширение postgis:
create table
public.prueba (
id smallint generated by default as identity not null,
name text null,
age smallint null,
created_at timestamp without time zone null,
punto geography null,
constraint prueba_pkey primary key (id)
) tablespace pg_default;
который относится к этому классу SQLalchemy:
class Prueba(Base):
__tablename__ = "prueba"
id: Mapped[int] = mapped_column(
sa.SmallInteger, sa.Identity(start=1), primary_key=True
)
name: Mapped[str] = mapped_column(sa.String(50), nullable=False)
age: Mapped[int] = mapped_column(sa.Integer, nullable=False)
created_at: Mapped[datetime] = mapped_column(sa.DateTime, default=datetime.now)
punto: Mapped[WKBElement] = mapped_column(
Geometry(geometry_type="POINT", srid=4326, spatial_index=True)
)
Я использую geoalchemy2, как предложено в этом вопросе, но каждый раз, когда я пытаюсь добавить данные в эту таблицу, код терпит неудачу.
Код, который я использую для добавления данные следующие:
prueba = Prueba(
name="Prueba_2",
age=5,
created_at=datetime.now(),
punto="POINT(-1.0 1.0)",
)
with Session() as session:
session.add(prueba)
session.commit()
Я добавляю данные таким образом, потому что следую руководству по geoalchemy2 orm, но при запуске получаю следующее исключение:
File "c:...\.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) function st_geomfromewkt(unknown) does not exist
LINE 1: ...a_2', 5, '2024-12-28T18:49:07.130429'::timestamp, ST_GeomFro...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
[SQL: INSERT INTO prueba (name, age, created_at, punto) VALUES (%(name)s, %(age)s, %(created_at)s, ST_GeomFromEWKT(%(punto)s)) RETURNING prueba.id]
[parameters: {'name': 'Prueba_2', 'age': 5, 'created_at': datetime.datetime(2024, 12, 28, 18, 49, 7, 130429), 'punto': 'POINT(-1.0 1.0)'}]
(Background on this error at: https://sqlalche.me/e/20/f405)
Я предполагаю, что ошибка связана с тем, как я определил класс, потому что та же ошибка появляется, когда я оставляю значение punto пустым.
Я также попробовал использовать подход, аналогичный описанному в этом руководстве, и попытался добавить данные с помощью этого кода:
punto=WKBElement("POINT(10 25)", srid=4326),
выдает другую ошибку:
File "c:\...\back\main.py", line 16, in main
punto=WKBElement("POINT(10 25)", srid=4326),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\...\.venv\Lib\site-packages\geoalchemy2\elements.py", line 201, in __init__
header = binascii.unhexlify(data[:18])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
binascii.Error: Non-hexadecimal digit found
Подробнее здесь: [url]https://stackoverflow.com/questions/79314309/how-can-i-add-data-to-a-geometry-column-in-supabase-using-sqlalchemy[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия