问题陈述-
我想使用SQLAlchemy大容量插入几百行。模式如下所示
all_scrips_tbl = Table('all_scrips_info', _METADATA,
Column('security_isin', String(16), primary_key=True),
Column('company_name', String(80)),
Column('nse_traded', Boolean, default=False),
Column('nse_start_date', Date,
default=datetime.date(year=2001, day=1, month=1)),
Column('bse_traded', Boolean, default=False),
Column('bse_start_date', Date,
default=datetime.date(year=2001, day=1, month=1)),
)
现在每个脚本可以是-nse_traded=True
,bse_traded=True
,或者两者都是nse_traded=True and bse_traded=True
所以我有插入语句,比如-
对于只有nse_traded=True
的证券
ins = t.insert().values(security_isin=nstock.isin,
company_name=nstock.name,
nse_traded=True,
nse_start_date=nstart_date,
)
对于只有bse_traded=True
-
ins = t.insert().values(security_isin=bstock.isin,
company_name=bstock.name,
bse_traded=True,
bse_start_date=bstart_date)
对应于nse_traded=True
和{
我想大量插入这些语句。因此,像values().compile
这样的带有create语句的默认值的东西将非常有用,这样我就可以使用以下命令-
conn.execute(all_scrips_info.insert() , [ {}, {} ] )
在什么情况下,dict会根据需要使用默认值填充?在
我还研究了this问题,但这与我的要求略有不同。有一个old question on google groups与我的要求类似。但是sqlalchemy的版本比较老,加上答案不太容易理解。在
我是不是遗漏了一些很明显的东西?在
下面我提供一个简单的示例,说明如何使用SQLAlchemy将CSV文件中的数据插入数据库。这里的默认值是创建日期。在init函数中,您可以添加更多的逻辑。。。创建对象时应用此逻辑。在
我想指出的是,还有其他方法。例如,请参阅SQLAlchemy文档:http://docs.sqlalchemy.org/en/latest/orm/persistence_techniques.html#bulk-operations
示例:
希望这有帮助。在
编辑:根据评论,我扩展了下面的汽车类。如果齿轮数丢失。。。使用默认值9。这当然是一个有限的例子,但是(我希望)展示了使用默认值的可能性
^{pr2}$相关问题 更多 >
编程相关推荐