Created
April 5, 2012 12:01
-
-
Save cocoatomo/2310374 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
from flask import Flask, render_template, make_response | |
from model import app, db, WorkTime, Employee, Project | |
import csv | |
def create_csv(): | |
with open('/tmp/worktime.csv', 'w') as f: | |
rows = db.session.query(WorkTime, Employee, Project) \ | |
.filter(WorkTime.employee_id==Employee.id) \ | |
.filter(WorkTime.project_id==Project.id).all() | |
csvwriter = csv.writer(f) | |
csvwriter.writerows([(w.date, e.name, p.name, w.kind, w.ratio) for w, e, p in rows]) | |
@app.route('/download') | |
def download(): | |
# create_csv() ここのコメントアウト外すと例外が飛ぶ | |
return make_response('TO BE IMPLEMENTED') | |
@app.route('/') | |
def index(): | |
return render_template('index.html') | |
if __name__ == '__main__': | |
app.debug = True | |
app.run() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
from flask import Flask | |
from flaskext.sqlalchemy import SQLAlchemy | |
app = Flask(__name__) | |
# url = 'mysql://worktime:[email protected]/worktime' | |
url = 'mysql://kinebuchi@localhost/test' | |
app.config['SQLALCHEMY_DATABASE_URI'] = url | |
db = SQLAlchemy(app) | |
class Employee(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
code = db.Column(db.String(45)) | |
name = db.Column(db.String(45)) | |
worktimes = db.relation('WorkTime', backref='employee') | |
def __init__(self, code, name): | |
self.code = code | |
self.name = name | |
def __repr(self): | |
return '<Employee {0}, {1}, {2}>'.format(self.id, self.code, self.name) | |
class Project(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
code = db.Column(db.String(20)) | |
name = db.Column(db.String(20)) | |
status = db.Column(db.Enum('PLANNED', 'RUNNING', 'FINISHED'), | |
default='PLANNED') | |
worktimes = db.relation('WorkTime', backref='project') | |
def __init__(self, code, name, status='PLANNED'): | |
self.code = code | |
self.name = name | |
self.status = status | |
def __repr__(self): | |
return '<Project {0}, {1}, {2}, {3}>'.format(self.id, self.code, | |
self.name, self.status) | |
class WorkTime(db.Model): | |
date = db.Column(db.Date, primary_key=True) | |
employee_id = db.Column(db.Integer, db.ForeignKey('employee.id'), | |
primary_key=True) | |
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), | |
primary_key=True) | |
kind = db.Column(db.Enum('BUDGET', 'ACTUAL'), primary_key=True) | |
ratio = db.Column(db.Float, default=0) | |
def __init__(self, date, employee_id, project_id, kind, ratio): | |
self.date = date | |
self.employee_id = employee_id | |
self.project_id = project_id | |
self.kind = kind | |
self.ratio = ratio | |
def __repr__(self): | |
return '<WorkTime {0}, {1}, {2}, {3}, {4}>'.format(self.date, | |
self.employee_id, | |
self.project_id, | |
self.kind, | |
self.ratio) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
git clone して以下の変更を加えたところ、例外は発生しませんでした。
(db.create_all() は手動で行いました)
diff --git a/app.py b/app.py
index 8c6c040..4161bf3 100644
--- a/app.py
+++ b/app.py
@@ -17,7 +17,7 @@ def create_csv():
@app.route('/download')
def download():
-# create_csv() ここのコメントアウト外すと例外が飛ぶ
return make_response('TO BE IMPLEMENTED')
@app.route('/')
diff --git a/model.py b/model.py
index 584039f..5263b7a 100644
--- a/model.py
+++ b/model.py
@@ -6,7 +6,8 @@ from flaskext.sqlalchemy import SQLAlchemy
app = Flask(name)
url = 'mysql://worktime:[email protected]/worktime'
-url = 'mysql://kinebuchi@localhost/test'
+#url = 'mysql://kinebuchi@localhost/test'
+url = 'sqlite:///test.db'
app.config['SQLALCHEMY_DATABASE_URI'] = url
db = SQLAlchemy(app)