Проблема с sqlalchemy, отраженной таблицей и значениями по умолчанию для строковых полей - PullRequest
0 голосов
/ 10 января 2010

хмм, есть ли причина, по которой sa пытается добавить Nones для столбцов varchar, для которых в схеме базы данных установлены значения по умолчанию?

поэтому, когда я пытаюсь добавить новую строку: лайк u = пользователь () u.foo = 'a' u.bar = 'b'

sa выдает запрос, в котором содержится гораздо больше столбцов с присвоенными им значениями None, а db, очевидно, барды и не выполняет подстановку по умолчанию.

Ответы [ 2 ]

2 голосов
/ 10 января 2010

Какую версию вы используете и какой код на самом деле? Ниже приведен пример кода, показывающий, что параметр server_default отлично работает для строковых полей:

from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

metadata = MetaData()
Base = declarative_base(metadata=metadata)

class Item(Base):
    __tablename__="items"
    id = Column(String, primary_key=True)
    int_val = Column(Integer, nullable=False, server_default='123')
    str_val = Column(String, nullable=False, server_default='abc')

engine = create_engine('sqlite://', echo=True)
metadata.create_all(engine)
session = sessionmaker(engine)()

item = Item(id='foo')
session.add(item)
session.commit()
print item.int_val, item.str_val

Вывод:

<...>
<...> INSERT INTO items (id) VALUES (?)
<...> ['foo']
<...>
123 abc
0 голосов
/ 10 января 2010

Я нашел ошибку в sa, это происходит только для строковых полей, они не получают свойство server_default по неизвестной причине, подали заявку на это уже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...