flask(SQLAlchemy+postgresql)を使って、今週と来週分の予定表をweb上で表示するアプリを作成しています。以下の様なプログラムで来週の予定を今週の予定に一括変換をしたいのですが、このプログラムを実行すると、一旦は今週の予定画面に来週の予定が表示されますが、一旦他のページに移動し、再度今週の予定画面に戻ると、変更前の状態に戻ってしまします。commit() が原因かと思い、コメント部分の2行を追加してみましたが、この2行を追加すると、そもそも画面上の今週の予定画面は変化しなくなります。
一括でテーブル内のデータを入れ替える方法をご教示下さい。2つのテーブルの内容と行いたい事は以下の通りです。
今週の予定(テーブル名:this_week_schedule)=> プログラム実行前に表示されている内容
id=1, day="Monday", to_do="今週月曜日の予定"
id=2, day="Tuesday", to_do="今週火曜日の予定"
id=3, day="Wednesday", to_do="今週水曜日の予定"
id=4, day="Thursday", to_do="今週木曜日の予定"
id=5, day="Friday", to_do="今週金曜日の予定"
来週の予定(テーブル名:next_week_schedule)=> プログラム実行後に表示したい内容(既に情報は準備されている状態)
id=1, day="Monday", to_do="来週月曜日の予定"
id=2, day="Tuesday", to_do="来週火曜日の予定"
id=3, day="Wednesday", to_do="来週水曜日の予定"
id=4, day="Thursday", to_do="来週木曜日の予定"
id=5, day="Friday", to_do="来週金曜日の予定"
(2つのテーブル共に質問のプログラム実行前に既に全ての情報が保存されています)
行いたい事は、
*next_week_scheduleテーブルの内容をthis_week_scheduleテーブルに上書き保存(以下の様にしたい)
this_week_schedule
id=1, day="Monday", to_do="来週月曜日の予定"
id=2, day="Tuesday", to_do="来週火曜日の予定"
id=3, day="Wednesday", to_do="来週水曜日の予定"
id=4, day="Thursday", to_do="来週木曜日の予定"
id=5, day="Friday", to_do="来週金曜日の予定"
*その後、next_week_scheduleテーブルの内容は削除
*render_templateでindex.htmlに対して更新されたthis_week_scheduleテーブルの全データを渡す
python
1 2app = Flask(__name__) 3app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/testdb' 4db = SQLAlchemy(app) 5#中略 6 7class This_week(db.Model): 8 __tablename__ = 'this_week_schedule' 9 id = db.Column(db.Integer, primary_key=True, autoincrement=False) 10 day = db.Column(db.Text()) 11 to_do = db.Column(db.Text()) 12 13class Next_week(db.Model): 14 __tablename__ = 'next_week_schedule' 15 id = db.Column(db.Integer, primary_key=True, autoincrement=False) 16 day = db.Column(db.Text()) 17 to_do = db.Column(db.Text()) 18 19#中略 20 21@app.route('/update') 22@login_required 23def update(): 24 25 next_week = Next_week.query.all() 26 this_week = This_week.query.all() 27 28 this_week = next_week 29 30 db.session.add_all(this_week) 31 32 ''' 33 ここに以下の2行を追加すると、予定の入れ替え自体行えず、画面に変化無し 34 db.session.commit() 35 this_week = This_week.query.all() 36 ''' 37 38 return render_template('index.html', this_week = this_week) 39
回答1件
あなたの回答
tips
プレビュー