【发布时间】:2013-03-19 17:07:31
【问题描述】:
我在没有结果的情况下进行了搜索,以从通过 sqlalchemy 创建的对象模型中获取整数值或布尔值,
我的意思是我可以添加它,它可以完美运行,但我无法获得整数值或布尔值,当我尝试打印它时得到的只是对象名称:
from sqlalchemy import create_engine, MetaData, Table, Column,Integer,String,Boolean,Sequence
from sqlalchemy.orm import mapper, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import json
class Bookmarks(object):
pass
#----------------------------------------------------------------------
engine = create_engine('postgresql://u:p@localghost/asd', echo=True)
Base = declarative_base()
class Tramo(Base):
__tablename__ = 'tramos'
__mapper_args__ = {'column_prefix':'tramos'}
id = Column(Integer, primary_key=True)
nombre = Column(String)
tramo_data = Column(String)
estado = Column(Boolean,default=True)
def __init__(self,nombre,tramo_data):
self.nombre=nombre
self.tramo_data=tramo_data
def __repr__(self):
return "[id:%s][nombre:%s][tramo:%s]" % (getattr(self, 'id'), self.nombre,self.tramo_data)
Session = sessionmaker(bind=engine)
session = Session()
tabla = Tramo.__table__
metadata = Base.metadata
metadata.create_all(engine)
b=Tramo('tramo1','adadas')
session.add(b)
session.commit()
print b
print b.id
它的印记
[id:tramos.id][nombre:tramo1][tramo:adadas]
tramos.id
我无法打印 id 值,看起来对象列在其中,但它没有返回属性的值
我什至会使用
session.refresh(b)
添加之后结果是一样的。
【问题讨论】:
-
你试过 print int(b.id)
-
这就是我得到的——TypeError: int() argument must be a string or a number, not 'Column'
-
看起来前缀用于对象名称而不是对象的 ddl 端。
-
您为什么使用
getattr(self, 'id')而不仅仅是self.id?您在提交对象后打印 id,因此将填充其 id 属性。
标签: python sqlalchemy