
maximo de un vector
Publicado por John (1 intervención) el 17/02/2016 13:58:18
Hola !
Me estoy iniciando en código Python y sqlalchemy.
He creado el siguiente programa que construye una base de datos en la que guarda los salarios de ciertos usuarios. Estoy intentando crear una propiedad híbrida que me haye, por ejemplo, la suma de los salarios de cada usuario y los guarde en una nueva columna:
Primero cargamos los paquetes necesarios:
Creamos la base:
Mi problema está en las filas 16 y 17, ¿qué es lo que falla?
Introducimos datos
Añadimos los datos a la sesión
Cuando ejecuto el siguiente comando me da error:
Alguna idea de qué está ocurriendo?
Me estoy iniciando en código Python y sqlalchemy.
He creado el siguiente programa que construye una base de datos en la que guarda los salarios de ciertos usuarios. Estoy intentando crear una propiedad híbrida que me haye, por ejemplo, la suma de los salarios de cada usuario y los guarde en una nueva columna:
Primero cargamos los paquetes necesarios:
1
2
3
4
5
6
7
8
from sqlalchemy import select, create_engine, ForeignKey, Date, Time, \
PrimaryKeyConstraint, UniqueConstraint, and_
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Float, Date, func
from sqlalchemy.orm import sessionmaker, relationship, backref, \
column_property, object_session
from sqlalchemy.ext.hybrid import hybrid_property, hybrid_method
import datetime
Creamos la base:
1
2
3
fich = 'sqlite:///prueba.sqlite'
engine = create_engine(fich, echo=False)
Base = declarative_base()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
total = Column(Integer)
accounts = relationship("SavingsAccount", backref="owner")
def __init__(self, name):
self.name = name
def __repr__(self):
return "<User(name ='%s')>" % str(self.name)
@hybrid_property
def total(self):
return sum(self.accounts)
class SavingsAccount(Base):
__tablename__ = 'account'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'), nullable=False)
balance = Column(Integer)
def __init__(self, user_id, balance):
self.user_id = user_id
self.balance = balance
def __repr__(self):
return "<SavingsAccount(user_id ='%s', balance ='%s')>" % (str(self.user_id), str(self.balance))
1
2
3
Base.metadata.create_all(engine)
Session = sessionmaker(bind = engine)
session = Session()
1
2
3
4
5
6
usuario_1 = User(name = "Dave")
usuario_1.accounts.append(SavingsAccount(user_id = 1, balance = 1200))
usuario_1.accounts.append(SavingsAccount(user_id = 1, balance = 2000))
usuario_2 = User(name = "John")
usuario_2.accounts.append(SavingsAccount(user_id = 2, balance = 1200))
usuario_2.accounts.append(SavingsAccount(user_id = 2, balance = 2100))
1
2
3
session.add(usuario_1)
session.add(usuario_2)
session.commit()
1
usuario_1.total
Alguna idea de qué está ocurriendo?
Valora esta pregunta


0