所以当我尝试添加新行时: 喜欢 你=用户() u.foo ='a' u.bar ='b'
sa发出一个查询,其中包含很多cols,并且没有赋值给那些值,而db显然是吟游诗人并且没有执行默认替换。
答案 0 :(得分: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
答案 1 :(得分:0)
我在sa中发现了它的一个错误,这只发生在字符串字段中,由于某些不明原因它们没有得到server_default属性,已经为此提交了一张票