Skip to content

Commit f448670

Browse files
committed
0update factory-application
1 parent aed58d0 commit f448670

File tree

9 files changed

+170
-9
lines changed

9 files changed

+170
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ db.sqlite3-journal
6464
# Flask stuff:
6565
instance/
6666
.webassets-cache
67+
postgres-data/
6768

6869
# Scrapy stuff:
6970
.scrapy
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from flask import Flask
2+
from flask_sqlalchemy import SQLAlchemy
3+
from .config.config import config
4+
5+
db = SQLAlchemy()
6+
7+
8+
def create_app(config_name):
9+
10+
app = Flask(__name__)
11+
app.config.from_object(config[config_name])
12+
13+
db.init_app(app)
14+
15+
@app.route('/')
16+
def index():
17+
return 'welcome'
18+
19+
return app
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import os
2+
import datetime
3+
4+
basedir = os.path.abspath(os.path.dirname(__file__))
5+
6+
7+
def create_sqlite_uri(db_name):
8+
return "sqlite:///" + os.path.join(basedir, db_name)
9+
10+
11+
class BaseConfig: # 基本配置
12+
SECRET_KEY = 'THIS IS MAX'
13+
PERMANENT_SESSION_LIFETIME = datetime.timedelta(days=14)
14+
15+
16+
class DevelopmentConfig(BaseConfig):
17+
DEBUG = False
18+
SQLALCHEMY_TRACK_MODIFICATIONS = False
19+
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://username:password@ip:3306/tablename'
20+
21+
SQLALCHEMY_ENGINE_OPTIONS = {
22+
"pool_pre_ping": True,
23+
"pool_recycle": 3600,
24+
}
25+
26+
27+
class TestingConfig(BaseConfig):
28+
TESTING = True
29+
SQLALCHEMY_TRACK_MODIFICATIONS = False
30+
SQLALCHEMY_DATABASE_URI = create_sqlite_uri("test.db")
31+
WTF_CSRF_ENABLED = False
32+
33+
34+
config = {
35+
'development': DevelopmentConfig,
36+
'testing': TestingConfig,
37+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from app import create_app
2+
3+
app = create_app('development')
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
click==7.1.2
22
Flask==1.1.2
3-
Flask-SQLAlchemy==2.4.1
3+
Flask-SQLAlchemy==2.4.4
44
itsdangerous==1.1.0
55
Jinja2==2.11.2
66
MarkupSafe==1.1.1
7-
SQLAlchemy==1.3.17
7+
SQLAlchemy==1.3.18
88
Werkzeug==1.0.1

template-flask-sqlalchemy/hash_tag.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
from flask import Flask
2+
from flask_sqlalchemy import SQLAlchemy
3+
4+
import os
5+
basedir = os.path.abspath(os.path.dirname(__file__))
6+
7+
#TODO: 第二篇增加欄位選項
8+
#TODO: 第二篇增加讀取全部選項
9+
10+
app = Flask(__name__)
11+
12+
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
13+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(
14+
basedir, 'hashtag.db')
15+
db = SQLAlchemy(app)
16+
17+
# 多
18+
relations = db.Table(
19+
'relations', db.Column('tid', db.Integer,
20+
db.ForeignKey('hashtag_table.id')),
21+
db.Column('pid', db.Integer, db.ForeignKey('post_table.id')))
22+
23+
24+
# 一
25+
class Hashtag(db.Model):
26+
__tablename__ = 'hashtag_table'
27+
id = db.Column(db.Integer, primary_key=True)
28+
tag = db.Column(db.String(20), nullable=False)
29+
tag_post_rel = db.relationship("Post",
30+
secondary=relations,
31+
backref="hashtag")
32+
33+
# backref='post', # ref 可以讓我們使用 Post.tags 進行對 tags 操作
34+
# lazy='dynamic' # 有使用才載入,提昇效能
35+
36+
37+
# ㄧ
38+
class Post(db.Model):
39+
__tablename__ = 'post_table'
40+
id = db.Column(db.Integer, primary_key=True)
41+
title = db.Column(db.String(80), nullable=False)
42+
# tag_id = db.Column(db.Integer, db.ForeignKey('hashtag_table.id'))
43+
44+
45+
@app.route('/create_db')
46+
def index():
47+
# db.create_all()
48+
49+
# t1 = Hashtag(tag='Max')
50+
# t2 = Hashtag(tag='Ben')
51+
52+
# db.session.add_all([t1, t2])
53+
# db.session.commit()
54+
55+
# p1 = Post(title='Post_1')
56+
# p2 = Post(title='Post_2')
57+
# p3 = Post(title='Post_3')
58+
59+
# db.session.add_all([p1, p2, p3])
60+
# db.session.commit()
61+
62+
tag1 = Hashtag.query.filter_by(tag='Max').first()
63+
print(tag1.id)
64+
65+
tags = Hashtag.query.all()
66+
print(tags)
67+
68+
for tag in tags:
69+
print(tag.id)
70+
print(tag.tag)
71+
72+
return 'ok'
73+
74+
75+
@app.route('/show')
76+
def show():
77+
78+
# u = Hashtag(tag='Max')
79+
# db.session.add(u)
80+
# db.session.commit()
81+
82+
a = Hashtag(tag='Max')
83+
print(a.id)
84+
# # p = Post(title='0703', tag_id=1)
85+
# p = Post(title='070301', tag_id='')
86+
# # p = Pet('dog', u.id)
87+
# db.session.add(p)
88+
# db.session.commit()
89+
return 'ok'
90+
91+
92+
# @app.route('/one_to_many')
93+
# def db_relation():
94+
# u = Person.query.filter_by(username='Max').first()
95+
# print('==========', u.pets)
96+
# print('==========', u.pets[0].petname)
97+
98+
# p = Pet.query.filter_by(petname='dog').first()
99+
# print('---------', p.owner.username)
100+
# print('---------', p.owner_id)
101+
# return 'ok'
102+
103+
if __name__ == "__main__":
104+
app.run(debug=True)

template-flask-sqlalchemy/main.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@
44
import os
55
basedir = os.path.abspath(os.path.dirname(__file__))
66

7-
#TODO: 第二篇增加欄位選項
8-
#TODO: 第二篇增加讀取全部選項
9-
107
app = Flask(__name__)
118

129
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
1310
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(
1411
basedir, 'test.db')
1512
db = SQLAlchemy(app)
1613

17-
14+
# 一
1815
class Person(db.Model):
1916
__tablename__ = 'person'
2017
id = db.Column(db.Integer, primary_key=True)
@@ -24,7 +21,7 @@ class Person(db.Model):
2421
def __init__(self, username):
2522
self.username = username
2623

27-
24+
# 多
2825
class Pet(db.Model):
2926
__tablename__ = 'pet'
3027
id = db.Column(db.Integer, primary_key=True)
@@ -44,7 +41,7 @@ def index():
4441
db.session.add(u)
4542
db.session.commit()
4643

47-
p = Pet('dog', u.id)
44+
p = Pet('dog', u.id)
4845
db.session.add(p)
4946
db.session.commit()
5047

template3-docker-compose-flask-nginx-postgres/flask/app/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ def insert_max():
3232
db.session.commit()
3333
return 'ok'
3434

35-
return app
35+
return app

0 commit comments

Comments
 (0)