python从SQLAlchemy中导出导入CSV文件

读写CSV数据

读csv文件

将数据读取为一个元祖的序列

import csv
with open('stocks.csv') as f:
    f_csv = csv.reader(f)
    headers = next(f_csv)
    for row in f_csv:
        # Process row
        ...

row是一个列表。访问字段可以用下标。
导入到sqlalchemy时:

header = Node.__table__.columns.keys()
with open(node_csv[0],encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for item in reader:
        #通过node_id导入,修改对象属性值
        if 'node_id' in header:
            node_id = item[header.index('node_id')]
            b_query = Node.query.filter_by(node_id=node_id)
        if b_query.count():
            b_node = b_query.one()
            for index in range(1,len(header)):
               setattr(b_node, header[index], item[index])
               db.session.commit()

写csv文件

将SQLAlchemy的数据导出成csv文件。
使用UTF-8编码,header从Node表中生成,将需要导出的项目从表中查询得到后,写入一行数据,数据是对象record的header属性值。

  • 使用示例
outpath = os.path.join(db_folder, "backup_node_%s.csv"%projectid)
outfile = open(outpath, "w", encoding="utf-8", newline="")

outcsv = csv.writer(outfile)
header = Node.__table__.columns.keys()
records = Node.query.filter_by(project_id=projectid).all()
for record in records:
    outcsv.writerow([getattr(record, c) for c in header ])
outfile.close()

引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值