Se è necessario recuperare un elenco di chiavi primarie di un class
non un instance
, di seguito viene descritto come eseguirlo.
È possibile utilizzare il metodo inspect. Ciò restituirà un'istanza Inspect
su cui è possibile eseguire l'analisi come segue. In questo esempio, utilizzo l'istanza Inspect
per restituirmi tutti i nomi attribute
di ogni primary_key di MyClass
.
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class MyClass(Base):
__tablename__ = "myclass"
key = Column(Integer, primary_key=True)
name = Column(String, primary_key=True)
from sqlalchemy import inspect
ins = inspect(MyClass)
print("Tuple of primary keys: ", ins.primary_key)
# Let's loop over them and print the attribute key name of each
for x in ins.primary_key:
print(x.key)
Returns
> Tuple of primary keys: (Column('key', Integer(), table=<myclass>, primary_key=True, nullable=False), Column('name', String(), table=<myclass>, primary_key=True, nullable=False))
> key
> name
Grande - grazie !! Proprio quello che stavo cercando! – frip
Questo non funziona più con 'sqlalchemy> = 1.0' – flazzarini
@flazzarini Funziona con' sqlalchemy> = 1.0' ed è ben documentato: http://docs.sqlalchemy.org/en/latest/orm/internals. html # sqlalchemy.orm.state.InstanceState.identity Sembra solo che differisca da quello che vuoi fare. – sebastian