Python 将数据从SQLAlchemy导出到CSV文件
我正在寻找从我正在开发的sqlalchemy应用程序生成(导出)csv。但是我在csv中得到了一些意想不到的结果,也就是说,我得到的不是csv文件中填充的MySQL DB表中的实际数据,而是声明性类模型条目(占位符??)。问题可能是我构造查询的方式,甚至是整个函数 奇怪的是,从csv输出(pic)判断,我的思路似乎正确,因为行/列计数与DB表相同,但实际数据只是没有填充。我对SQLAlchemy ORM和Flask相当陌生,所以在这里寻找一些指导来度过难关。感谢建设性的反馈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
#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')
谢谢,巴斯。你的建议是我最初的建议,但不知怎的在荒野中迷失了方向。谢谢你的指导。代码现在按预期工作。