Python 将数据从SQLAlchemy导出到CSV文件

Python 将数据从SQLAlchemy导出到CSV文件,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我正在寻找从我正在开发的sqlalchemy应用程序生成(导出)csv。但是我在csv中得到了一些意想不到的结果,也就是说,我得到的不是csv文件中填充的MySQL DB表中的实际数据,而是声明性类模型条目(占位符??)。问题可能是我构造查询的方式,甚至是整个函数 奇怪的是,从csv输出(pic)判断,我的思路似乎正确,因为行/列计数与DB表相同,但实际数据只是没有填充。我对SQLAlchemy ORM和Flask相当陌生,所以在这里寻找一些指导来度过难关。感谢建设性的反馈 #class dec

我正在寻找从我正在开发的sqlalchemy应用程序生成(导出)csv。但是我在csv中得到了一些意想不到的结果,也就是说,我得到的不是csv文件中填充的MySQL DB表中的实际数据,而是声明性类模型条目(占位符??)。问题可能是我构造查询的方式,甚至是整个函数

奇怪的是,从csv输出(pic)判断,我的思路似乎正确,因为行/列计数与DB表相同,但实际数据只是没有填充。我对SQLAlchemy ORM和Flask相当陌生,所以在这里寻找一些指导来度过难关。感谢建设性的反馈

#class declaration with  DB object (divo)
class pearl(divo.Model):
    __tablename__ = 'users'                 
    work_id = divo.Column(divo.Integer, primary_key=True)
    user_fname = divo.Column(divo.String(length=255))
    user_lname = divo.Column(divo.String(length=255))
    user_category = divo.Column(divo.String(length=255))
    user_status = divo.Column(divo.String(length=1))
    login_id = divo.Column(divo.String(length=255))
    login_passwd = divo.Column(divo.String(length=255))

#user report function
@app.route("/reports/users")
def users_report():
    with open(r'C:\Users\Xxxxxxx\Projects\_repository\zzz.csv', 'w') as s_key:
        x15 = pearl.query.all()
        for i in x15:
#        x16 = tuple(x15)
            csv_out = csv.writer(s_key)
            csv_out.writerow(x15)
    flash("Report generated. Please check designated repository.", "green")
    return redirect(url_for('reports_landing'))  # return redirect(url_for('other_tasks'))
#csv结果(见附图)

我得到的不是csv文件中填充的MySQL DB表中的实际数据,而是声明性类模型条目(占位符??)

列表中的每个对象

x15 = pearl.query.all()
表示
用户
表中的一行

您在电子表格中看到的不是占位符,而是每个行对象的字符串表示形式(请参见)

可以通过“列名”属性获取特定行对象的列值,例如:

x15[0].work_id # Assumes there is at least one row object in x15
你可以这样做:

with open(r'C:\Users\Xxxxxxx\Projects\_repository\zzz.csv', 'w') as s_key:
    x15 = divo.session.query(pearl.work_id, pearl.user_fname) # Add columns to query as needed
    for i in x15:
        csv_out = csv.writer(s_key)
        csv_out.writerow(i)
上述代码中的
i
是一个元组,其形式如下:

('work_id value', 'user_fname value')

谢谢,巴斯。你的建议是我最初的建议,但不知怎的在荒野中迷失了方向。谢谢你的指导。代码现在按预期工作。