f7cba4a5 by Gruel

mysql config & cmd test

1 parent 93fa8104
1 certifi==2016.2.28 1 certifi==2016.2.28
2 Django==2.1 2 Django==2.1
3 # django-mysqlpool @ https://github.com/smartfile/django-mysqlpool/archive/master.zip
3 djangorestframework==3.9.0 4 djangorestframework==3.9.0
4 djangorestframework-jwt==1.11.0 5 djangorestframework-jwt==1.11.0
6 marshmallow==3.6.1
5 PyJWT==1.7.1 7 PyJWT==1.7.1
6 PyMuPDF==1.17.0 8 PyMuPDF==1.17.0
9 PyMySQL==0.9.3
7 pytz==2020.1 10 pytz==2020.1
8 # simple-config @ http://gitlab.situdata.com/zhouweiqi/simple_config/repository/archive.tar.gz?ref=master 11 # simple-config @ http://gitlab.situdata.com/zhouweiqi/simple_config/repository/archive.tar.gz?ref=master
9 # situlogger @ http://gitlab.situdata.com/zhouweiqi/situlogger/repository/archive.tar.gz?ref=master 12 # situlogger @ http://gitlab.situdata.com/zhouweiqi/situlogger/repository/archive.tar.gz?ref=master
10 six==1.14.0 13 six==1.14.0
14 SQLAlchemy==0.9.10
15 webargs==6.1.0
......
1 http://gitlab.situdata.com/zhouweiqi/simple_config/repository/archive.tar.gz?ref=master 1 http://gitlab.situdata.com/zhouweiqi/simple_config/repository/archive.tar.gz?ref=master
2 http://gitlab.situdata.com/zhouweiqi/situlogger/repository/archive.tar.gz?ref=master 2 http://gitlab.situdata.com/zhouweiqi/situlogger/repository/archive.tar.gz?ref=master
3 https://github.com/smartfile/django-mysqlpool/archive/master.zip
...\ No newline at end of file ...\ No newline at end of file
......
1 import time
2
3 from django.core.management import BaseCommand
4
5
6 class Command(BaseCommand):
7
8 def handle(self, *args, **kwargs):
9 while True:
10 print(time.time())
11 time.sleep(5)
...@@ -3,7 +3,7 @@ from django.db import models ...@@ -3,7 +3,7 @@ from django.db import models
3 # Create your models here. 3 # Create your models here.
4 4
5 5
6 class Document(models.Model): 6 class UploadDocRecords(models.Model):
7 id = models.AutoField(primary_key=True, verbose_name="id") 7 id = models.AutoField(primary_key=True, verbose_name="id")
8 application_id = models.CharField(max_length=64, verbose_name="申请id") 8 application_id = models.CharField(max_length=64, verbose_name="申请id")
9 main_applicant = models.CharField(max_length=16, verbose_name="主申请人") 9 main_applicant = models.CharField(max_length=16, verbose_name="主申请人")
...@@ -21,5 +21,5 @@ class Document(models.Model): ...@@ -21,5 +21,5 @@ class Document(models.Model):
21 21
22 class Meta: 22 class Meta:
23 managed = False 23 managed = False
24 db_table = 'document' 24 db_table = 'upload_doc_records'
25 25
......
...@@ -3,7 +3,7 @@ from webargs import fields ...@@ -3,7 +3,7 @@ from webargs import fields
3 from webargs.djangoparser import use_args, parser 3 from webargs.djangoparser import use_args, parser
4 from common.mixins import GenericView 4 from common.mixins import GenericView
5 from common import response 5 from common import response
6 from .models import Document 6 from .models import UploadDocRecords
7 7
8 # Create your views here. 8 # Create your views here.
9 9
...@@ -14,16 +14,16 @@ def load_data(request, schema): ...@@ -14,16 +14,16 @@ def load_data(request, schema):
14 return request.data 14 return request.data
15 15
16 16
17 application_data = {'applicationId': fields.Str(required=True)} 17 application_data_args = {'applicationId': fields.Str(required=True)}
18 18
19 applicant_data = { 19 applicant_data_args = {
20 'mainApplicantName': fields.Str(required=True), 20 'mainApplicantName': fields.Str(required=True),
21 'coApplicantName': fields.Str(required=True), 21 'coApplicantName': fields.Str(required=True),
22 'guarantor1Name': fields.Str(required=True), 22 'guarantor1Name': fields.Str(required=True),
23 'guarantor2Name': fields.Str(required=True), 23 'guarantor2Name': fields.Str(required=True),
24 } 24 }
25 25
26 document = { 26 document_args = {
27 'documentName': fields.Str(required=True), 27 'documentName': fields.Str(required=True),
28 'documentScheme': fields.Str(required=True), 28 'documentScheme': fields.Str(required=True),
29 'businessType': fields.Str(required=True), 29 'businessType': fields.Str(required=True),
...@@ -32,10 +32,10 @@ document = { ...@@ -32,10 +32,10 @@ document = {
32 'metadataVersionId': fields.Str(required=True), 32 'metadataVersionId': fields.Str(required=True),
33 } 33 }
34 34
35 doc_upload = { 35 doc_upload_args = {
36 'applicationData': fields.Nested(application_data, required=True), 36 'applicationData': fields.Nested(application_data_args, required=True),
37 'applicantData': fields.Nested(applicant_data, required=True), 37 'applicantData': fields.Nested(applicant_data_args, required=True),
38 'document': fields.Nested(document, required=True), 38 'document': fields.Nested(document_args, required=True),
39 } 39 }
40 40
41 41
...@@ -43,20 +43,23 @@ class DocView(GenericView): ...@@ -43,20 +43,23 @@ class DocView(GenericView):
43 permission_classes = [] 43 permission_classes = []
44 44
45 # 创建模型 45 # 创建模型
46 @use_args(doc_upload, location='data') 46 @use_args(doc_upload_args, location='data')
47 def post(self, request, args): 47 def post(self, request, args):
48 Document.objects.create( 48 application_data = args.get('applicationData')
49 application_id=args.get('applicationId'), 49 applicant_data = args.get('applicantData')
50 main_applicant=args.get('mainApplicantName'), 50 document = args.get('document')
51 co_applicant=args.get('coApplicantName'), 51 UploadDocRecords.objects.create(
52 guarantor_1=args.get('guarantor1Name'), 52 application_id=application_data.get('applicationId'),
53 guarantor_2=args.get('guarantor2Name'), 53 main_applicant=applicant_data.get('mainApplicantName'),
54 document_name=args.get('documentName'), 54 co_applicant=applicant_data.get('coApplicantName'),
55 document_scheme=args.get('documentScheme'), 55 guarantor_1=applicant_data.get('guarantor1Name'),
56 business_type=args.get('businessType'), 56 guarantor_2=applicant_data.get('guarantor2Name'),
57 data_source=args.get('dataSource'), 57 document_name=document.get('documentName'),
58 metadata_version_id=args.get('metadataVersionId'), 58 document_scheme=document.get('documentScheme'),
59 upload_finish_time=args.get('uploadFinishTime'), 59 business_type=document.get('businessType'),
60 data_source=document.get('dataSource'),
61 metadata_version_id=document.get('metadataVersionId'),
62 upload_finish_time=document.get('uploadFinishTime'),
60 ) 63 )
61 self.running_log.info('[doc upload success] [args={0}]'.format(args)) 64 self.running_log.info('[doc upload success] [args={0}]'.format(args))
62 return response.ok() 65 return response.ok()
......
...@@ -11,7 +11,7 @@ https://docs.djangoproject.com/en/2.1/ref/settings/ ...@@ -11,7 +11,7 @@ https://docs.djangoproject.com/en/2.1/ref/settings/
11 """ 11 """
12 12
13 import os 13 import os
14 from . import conf 14 from . import conf, database
15 from logging import config 15 from logging import config
16 16
17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
...@@ -42,6 +42,7 @@ INSTALLED_APPS = [ ...@@ -42,6 +42,7 @@ INSTALLED_APPS = [
42 'rest_framework', 42 'rest_framework',
43 'common', 43 'common',
44 'apps.account', 44 'apps.account',
45 'apps.doc',
45 ] 46 ]
46 47
47 MIDDLEWARE = [ 48 MIDDLEWARE = [
...@@ -78,12 +79,18 @@ WSGI_APPLICATION = 'wsgi.application' ...@@ -78,12 +79,18 @@ WSGI_APPLICATION = 'wsgi.application'
78 # Database 79 # Database
79 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases 80 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
80 81
82 # DATABASES = {
83 # 'default': {
84 # 'ENGINE': 'django.db.backends.sqlite3',
85 # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
86 # }
87 # }
88
81 DATABASES = { 89 DATABASES = {
82 'default': { 90 'default': conf.get_namespace('MYSQL_')
83 'ENGINE': 'django.db.backends.sqlite3',
84 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
85 }
86 } 91 }
92 DATABASE_ROUTERS = ['settings.database.DBRouter']
93 MYSQLPOOL_ARGUMENTS = database.MYSQLPOOL_ARGUMENTS
87 94
88 95
89 # Password validation 96 # Password validation
......
1 """
2 Database
3 https://docs.djangoproject.com/en/1.11/ref/settings/#databases
4 """
5 import pymysql
6 from django.db.models import options
7
8 pymysql.install_as_MySQLdb()
9
10 # 同一App下的Model可能会存储到不同的db,所以根据app_label来做db_router不是特别合适
11 # 所以添加situ_db_label来映射model到db
12 # 为Django的model的Meta添加额外的属性situ_db_label
13 options.DEFAULT_NAMES = tuple(list(options.DEFAULT_NAMES) + ['situ_db_label'])
14
15 # 数据库连接池配置
16 MYSQLPOOL_ARGUMENTS = {
17 'recycle': 30,
18 'pool_size': 128,
19 'max_overflow': 10,
20 'timeout': 5,
21 'use_threadlocal': True,
22 }
23
24
25 class DBRouter(object):
26
27 def db_for_read(self, model, **hints):
28 if hasattr(model._meta, 'situ_db_label'):
29 return model._meta.aft_db_label
30 return None
31
32 def db_for_write(self, model, **hints):
33 if hasattr(model._meta, 'situ_db_label'):
34 return model._meta.aft_db_label
35 return None
36
37 def allow_relation(self, obj1, obj2, **hints):
38 return True
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!