1. 程式人生 > 其它 >某某系統從外部基礎庫讀取資料

某某系統從外部基礎庫讀取資料

前提要開通訪問策略和1521埠

import schedule
import time
import datetime
import csv
import shutil
from django.core.management.base import BaseCommand, CommandError
from d3.models import Student, Xueji, TempXueji
from userapp.models import Jg
import cx_Oracle as db
import os
from django.db.models import F, Func
from django.db.models.functions import Length, Upper from django.db.models import Q, Count, Max, Min, Sum, Avg os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' def queryServerdb(sql): username = "xxxxx" passwd = "xxxxxx" host = "xxxxxx" port = "1521" sid = "xxxxxx" dsn
= db.makedsn(host, port, service_name=sid) con = db.connect(user=username, password=passwd, dsn=dsn) cur = con.cursor() cur.execute(sql) result = cur.fetchall() cur.close() con.close() return (result) def queryLocaldb(sql): username = "lxg" passwd = "lxg" host
= "127.0.0.1" port = "1521" sid = "XE" dsn = db.makedsn(host, port, service_name=sid) con = db.connect(user=username, password=passwd, dsn=dsn) cur = con.cursor() cur.execute(sql) result = cur.fetchall() cur.close() con.close() return (result) #取得原始的學籍資訊(讀取oracle庫) def job_02_TempXueji(): print('====begin==job_02_TempXueji==') sql = "select " \ "xs_jbxx_id,sfzjlxm,sfzjh,xm,xxsszgjyxzdm," \ "sheng,shi,xian,xxbsm,xxmc," \ "jyjd_mc,xjnjdm_mc,jdztm_mc,sfzx_mc,sfby_mc," \ "gxsj,grbsm from qzk_cjxs.ZXX_CJXS_BDXX" rows = queryServerdb(sql) TempXueji.objects.all().delete() tempXueji_list = [] for row in rows: # try: # obj = TempXueji.objects.get(xs_jbxx_id=row[0], gxsj=row[15]) # except TempXueji.DoesNotExist: # TempXueji.objects.filter(xs_jbxx_id=row[0]).delete() if row[13] == '': status = '在校生' elif row[14] == '': status = '初中畢業' else: status = '無學籍' obj = TempXueji( xs_jbxx_id=row[0], sfzjlxm=row[1], sfzjh=row[2], xm=row[3], xxsszgjyxzdm=row[4], sheng=row[5], shi=row[6], xian=row[7], xxbsm=row[8], xxmc=row[9], jyjd_mc=row[10], xjnjdm_mc=row[11], jdztm_mc=row[12], sfzx_mc=row[13], sfby_mc=row[14], gxsj=row[15], grbsm=row[16], status=status ) tempXueji_list.append(obj) TempXueji.objects.bulk_create(tempXueji_list) print('====end==job_02_TempXueji==') print(str(TempXueji.objects.all().count()))
import schedule
import time
import datetime
import csv
import shutil
from django.core.management.base import BaseCommand, CommandError
from d3.models import Student, Xueji, TempXueji
from userapp.models import Jg
import cx_Oracle as db
import os
from django.db.models import F, Func
from django.db.models.functions import Length, Upper
from django.db.models import Q, Count, Max, Min, Sum, Avg

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'


class Command(BaseCommand):
help = 'working in command!'

def handle(self, *args, **options):
schedule.every().day.at("20:00").do(job_00)
schedule.every().day.at("20:20").do(job_01)
schedule.every().day.at("06:00").do(job_02_TempXueji)
schedule.every().day.at("06:40").do(job_03_final)
# schedule.every(2).seconds.do(job_02_TempXueji)
# schedule.every(2).seconds.do(job_04_final())
# schedule.every(2).seconds.do(job_00)
# schedule.every(2).seconds.do(job_01)
while True:
schedule.run_pending()
time.sleep(10)


# 共享學生資訊-匯出csv
def job_00():
stuquery = Student.objects.all()
with open('/home/sftp/sftpuser/students.csv', 'w') as csvfile:
writer = csv.writer(csvfile, quotechar='"', quoting=csv.QUOTE_ALL)
columns = ["資料年份", "應屆往屆",
"機構id", "身份證", "姓名", "性別", "殘疾類別 ", "殘疾等級",
"初核狀態", "不安置原因", "安置方式"]

rows = ([
my_row.year, my_row.year_type,
my_row.jg_id, my_row.sfz, my_row.name, my_row.get_gender_display(), my_row.get_dis_type_display(), my_row.get_dis_grade_display(),
my_row.ifchuhe, my_row.noanzhi_type, my_row.anzhi_fangshi, ]
for my_row in stuquery)

writer.writerow(columns)
for row in rows:
writer.writerow(row)

print("job_00working...")


# 共享機構資訊-匯出csv
def job_01():
jgquery = Jg.objects.all()
with open('/home/sftp/sftpuser/jg.csv', 'w') as csvfile:
writer = csv.writer(csvfile, quotechar='"', quoting=csv.QUOTE_ALL)
columns = ["機構id", "全稱", "簡稱", "層級", "上級", "是否初核"]

rows = ([
my_row.p_code, my_row.full_name,
my_row.short_name, my_row.level, my_row.parent_code, my_row.ifchuhe]
for my_row in jgquery)

writer.writerow(columns)
for row in rows:
writer.writerow(row)

print("job_01working...")


def queryServerdb(sql):
username = "cjxs"
passwd = "Tgds_901"
host = "172.18.35.200"
port = "1521"
sid = "jcqzdb"
dsn = db.makedsn(host, port, service_name=sid)
con = db.connect(user=username, password=passwd, dsn=dsn)
cur = con.cursor()
cur.execute(sql)
result = cur.fetchall()
cur.close()
con.close()
return (result)


def queryLocaldb(sql):
username = "lxg"
passwd = "lxg"
host = "127.0.0.1"
port = "1521"
sid = "XE"
dsn = db.makedsn(host, port, service_name=sid)
con = db.connect(user=username, password=passwd, dsn=dsn)
cur = con.cursor()
cur.execute(sql)
result = cur.fetchall()
cur.close()
con.close()
return (result)

#取得原始的學籍資訊(讀取oracle庫)
def job_02_TempXueji():
print('====begin==job_02_TempXueji==')
sql = "select " \
"xs_jbxx_id,sfzjlxm,sfzjh,xm,xxsszgjyxzdm," \
"sheng,shi,xian,xxbsm,xxmc," \
"jyjd_mc,xjnjdm_mc,jdztm_mc,sfzx_mc,sfby_mc," \
"gxsj,grbsm from qzk_cjxs.ZXX_CJXS_BDXX"
rows = queryServerdb(sql)
TempXueji.objects.all().delete()

tempXueji_list = []
for row in rows:
# try:
# obj = TempXueji.objects.get(xs_jbxx_id=row[0], gxsj=row[15])
# except TempXueji.DoesNotExist:
# TempXueji.objects.filter(xs_jbxx_id=row[0]).delete()
if row[13] == '':
status = '在校生'
elif row[14] == '':
status = '初中畢業'
else:
status = '無學籍'

obj = TempXueji(
xs_jbxx_id=row[0],
sfzjlxm=row[1],
sfzjh=row[2],
xm=row[3],
xxsszgjyxzdm=row[4],
sheng=row[5],
shi=row[6],
xian=row[7],
xxbsm=row[8],
xxmc=row[9],
jyjd_mc=row[10],
xjnjdm_mc=row[11],
jdztm_mc=row[12],
sfzx_mc=row[13],
sfby_mc=row[14],
gxsj=row[15],
grbsm=row[16],
status=status
)
tempXueji_list.append(obj)

TempXueji.objects.bulk_create(tempXueji_list)
print('====end==job_02_TempXueji==')
print(str(TempXueji.objects.all().count()))