使用 for 循环设置 table 的列
Use a for loop to set columns of a table
我目前这样定义 PostgreSQL 数据库的表和列:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
col_2 = Column(Float)
col_3 = Column(Float)
col_4 = Column(Float)
col_5 = Column(Float)
# ....
col_24 = Column(Float)
col_25 = Column(Float)
与其多次编写相同的行,不如使用设置相似列的 for 循环:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
for ind in range(2, 26):
# set col_$ind
????
我应该在 for 循环中放入什么来设置属性 col_$ind
?
完全合理的目标 – 作为软件开发人员,您的目标是高效地编写代码。但是,当您与关系数据库进行更深入的交互时,您可能会发现显式(尽管是冗余的)定义的价值。
尽管如此,以下是实现循环方式的方法 table 定义:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
# Define your class here
class MyTable(Base):
__tablename__ = "my_table"
# define your primary key
col_1 = Column(Integer, primary_key=True, comment='primary key')
# Create columns with a loop
for i in range(2, 26):
setattr(MyTable, f'col_{i}', Column(Float))
我最终使用了 vars()
:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
for ind in range(2, 26):
# set col_$ind
vars()[f"col_{ind}"] = Column(Float)
我目前这样定义 PostgreSQL 数据库的表和列:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
col_2 = Column(Float)
col_3 = Column(Float)
col_4 = Column(Float)
col_5 = Column(Float)
# ....
col_24 = Column(Float)
col_25 = Column(Float)
与其多次编写相同的行,不如使用设置相似列的 for 循环:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
for ind in range(2, 26):
# set col_$ind
????
我应该在 for 循环中放入什么来设置属性 col_$ind
?
完全合理的目标 – 作为软件开发人员,您的目标是高效地编写代码。但是,当您与关系数据库进行更深入的交互时,您可能会发现显式(尽管是冗余的)定义的价值。
尽管如此,以下是实现循环方式的方法 table 定义:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
# Define your class here
class MyTable(Base):
__tablename__ = "my_table"
# define your primary key
col_1 = Column(Integer, primary_key=True, comment='primary key')
# Create columns with a loop
for i in range(2, 26):
setattr(MyTable, f'col_{i}', Column(Float))
我最终使用了 vars()
:
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Float, Integer
Base = declarative_base()
class MyTable(Base):
__tablename__ = "my_table"
col_1 = Column(Integer, primary_key=True)
for ind in range(2, 26):
# set col_$ind
vars()[f"col_{ind}"] = Column(Float)