как передать значение NULERIC NULERIC в PostgreSQL из SQLAlchemy в Python [duplicate]

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        scan.nextLine();
        double d = scan.nextDouble();
        scan.nextLine();
        String s = scan.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
6
задан bodacydo 5 October 2015 в 23:15
поделиться

3 ответа

Вместо попытки

self.type = NULL

попробуйте как Ярослав Админ предложил

self.type = None

Поскольку эквивалент Python для NULL равен None.

19
ответ дан Community 3 September 2018 в 17:55
поделиться

Как указывали другие ответы, явный NULL может быть вставлен путем передачи None или в случае SQLAlchemy a null() в качестве значения. На самом деле PEP-249 «DB-API v2.0» четко указывает это в «Объекты и конструкторы объектов» :

Значения SQL NULL представлены Python None singleton на входе и выходе.

В качестве третьего варианта можно просто опустить столбец, если он является нулевым:

t = Table('t', metadata,
          Column('a', Integer),
          Column('b', Integer))

stmt = t.insert().values(a=1)
engine.execute(stmt)

будет эффективно вставлять новый row (1, NULL) в таблице t, поскольку для столбца b значение не указано. То же самое относится к сопоставленным классам, которые, я полагаю, исходный вопрос фактически используется (из-за self):

class T(Base):
    __tablename__ = 't'
    id = Column(Integer, primary_key=True)
    a = Column(Integer)
    b = Column(Integer)

session.add(T(a=1))
session.commit()

снова эффективно приводит к вставке (default, 1, NULL).

1
ответ дан Ilja Everilä 3 September 2018 в 17:55
поделиться

Я знаю, что это старый поток, но это сработало для меня

self.type = sqlalchemy.sql.null()
2
ответ дан omeanwell 3 September 2018 в 17:55
поделиться
Другие вопросы по тегам:

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