我想做这样的事情:
select username, userid, 'user' as new_column from users_table.
Run Code Online (Sandbox Code Playgroud)
可以使用sqlalchemy选择表的列,如下所示:
query = select([users_table.c.username, users_table.c.userid])
Run Code Online (Sandbox Code Playgroud)
我该怎么做选择x是col_x在SQLAlchemy的查询?
我想创建一个函数,给定表的名称,返回具有该表名的模型.例如:
class Model(Base):
__tablename__ = 'table'
...a bunch of Columns
def getModelFromTableName(tablename):
...something magical
Run Code Online (Sandbox Code Playgroud)
所以getModelFromTableName('table')应该返回Model类.
我的目标是在我正在制作的简单表单生成器中使用该函数,因为FormAlchemy不能与python3.2一起工作,我希望它能很好地处理外键.
任何人都可以给我任何关于如何让getModelFromTableName工作的指针吗?
这是我的一个想法(可能完全错误,我之前没有使用过meta类)
如果我要使我的Model类继承自Base以及其他一些类(TableReg)并具有TableReg商店Model的类meta,该怎么办?tablename在某些全局字典或Singleton中.
我意识到这可能是完全关闭的,因为Base的元类做了一些非常重要且非常好的东西,我不想打破,但我认为必须有一种方法让我在元类中附加一些构造函数代码我的模特 或者我不明白.
我正在将我的SQLAlchemy映射的星型模式直接查询到a,pandas DataFrame并且从pandas我想要解决的问题中得到一个恼人的SAWarning .这是一个简化版本.
class School(Base):
__tablename__ = 'DimSchool'
id = Column('SchoolKey', Integer, primary_key=True)
name = Column('SchoolName', String)
district = Column('SchoolDistrict', String)
class StudentScore(Base):
__tablename__ = 'FactStudentScore'
StudentKey = Column('StudentKey', Integer, ForeignKey('DimStudent.StudentKey'), primary_key = True)
SchoolKey = Column('SchoolKey', Integer, ForeignKey('DimSchool.SchoolKey'), primary_key = True)
PointsPossible = Column('PointsPossible', Integer)
PointsReceived = Column('PointsReceived', Integer)
student = relationship("Student", backref='studentscore')
school = relationship("School", backref='studentscore')
Run Code Online (Sandbox Code Playgroud)
我用这样的语句查询日期:
standard = session.query(StudentdScore, School).\
join(School).filter(School.name.like('%Dever%'))
testdf = pd.read_sql(sch.statement, sch.session.bind)
Run Code Online (Sandbox Code Playgroud)
然后得到这个警告:
SAWarning: Column 'SchoolKey' on table <sqlalchemy.sql.selectable.Select at …Run Code Online (Sandbox Code Playgroud)