2010-01-10 4 views
0

흠, sa가 데이터베이스 스키마에 기본값이 설정된 varchar 열에 Nones를 추가하려고하는 이유가 무엇입니까? float 또는 int (im 리플렉션 사용).sqlalchemy 문제, 반영된 테이블 및 문자열 필드의 기본값

그래서 내가 새 행을 추가 할 때 : u는 사용자() = 처럼 u.foo = SA는 더 많이 가지고 쿼리를 실행

'A' u.bar = 'B' cols에 None 값이 할당되어 있고, db는 분명히 bard로 기본 치환을 수행하지 않습니다. 나는 그에게 사에서 버그를 발견 한

+2

-1 : 없음 코드를. 오류를 나타내는 가장 작은 코드 조각을 게시해야합니다. 그렇지 않으면, 우리는 당신이하고있는 일과 왜 효과가 없는지 추측해야합니다. –

답변

0

는,이,가, 어떤 알 수없는 이유로 server_default 속성을 가져 해달라고 당신이 사용합니까이 이미

2

어떤 버전에 대한 티켓을 제기하고 무엇이 실제이고 문자열 필드에만 발생 암호? 다음은 샘플 코드는 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