如何让本地程序调用并处理基于Django所开发网站的数据库

Django-基于Python的Web开发架构,拥有与SQL查询语句完全分离的数据库处理机制,它可以让不懂SQL语法的开发人员轻松处理数据库内容(包括insert、delete、update等等常用功能)。

该文档的需求出发点为:

当有web应用的后台数据需要批量更新时,通常的解决方案是:

1. 将文件整理成数据库table完全适配的格式并使用load(mysql)或copy(postgres)导入

2. 当文件内容需要进行预处理时,这需要一个程序调用数据库接口,边处理边存入

基于解决方案2,将有以下棘手问题:

1. 不懂 SQL语言

2. 需要重新学习psycopg2、MySQLdb等接口用法

3. 不同的数据库需要了解不同的接口、不同的语法

具体如下:

#! /usr/local/bin/python

import psycopg2 ,sys,re

#import MySQLdb ,sys,re

ifile=sys.argv[1]

itype=sys.argv[2]

conn = psycopg2.connect(database="Django", user="django", password="******", host="localhost", port="5432") ##Postgres接口,连接数据库

#conn = MySQLdb.connect(host=‘localhost‘,user=‘django‘,passwd=‘******‘,db=‘Django‘,port=3306)

cur = conn.cursor() ##MYSQL接口

File=file(ifile,‘r‘)

for line in File.readlines():

array=line.split("\t")

for i in range(0,len(array)):

if re.search(r‘^\s*NULL\s*$‘,array[i]): 

array[i]="" 

cur.execute(‘INSERT INTO "Disease_disease"(id,"Name","Count","Description") VALUES(%s,%s,%s,%s)‘, (array[0],array[1],array[2],array[3]))  ##Postgres,提交SQL insert查询语句

#cur.execute(‘INSERT INTO Disease_disease(id,Name,Count,Description) VALUES(%s,%s,%s,%s)‘, (array[0],array[1],array[2],array[3]))  ##MYSQL

conn.commit()

cur.close()

conn.close()

Django 解决方案:

直接调用django模块及其配置文件,直接使用django语法并处理数据库

具体如下:

#! /usr/local/bin/python

import sys, re 

sys.path.append("/home/zhuying/WebSite") ## 设置目录,即后台代码Project目录

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WebSite.settings")  ##调用该Project的配置文件

from OneKP.models import *  ##调用OneKP这个App的数据库模型

family=Family.objects.get(id=1)

family.Name="Unknown"

family.Description="Unknown"

family.save()

注:该程序为普通python程序,与django web应用后台程序无关

更高的价值:

该解决方案更高的价值并不显现于单表和单记录的查询和处理,而在于复杂数据库模型下,不同表之间的外键索引联系的联动处理。

时间: 2024-10-10 08:00:51

如何让本地程序调用并处理基于Django所开发网站的数据库的相关文章

基于Django快速开发可定制的办公系统实战(1):Git的使用

基于Django快速开发可定制的办公系统实战(1):Git的使用 ?为什么在项目的开篇要介绍下git的使用呢?俗话说:"工欲善其事,必先利其器",git工具就是项目开发的必备利器,尤其是在多人协作开发环境中.使用git工具可实现分布式的版本控制,可在服务端和本地创建一个版本库. ?脑图是本文的"脊椎",了解个大概后,再通读本文,再加上实际的操作,效果会更好,那我们就开始吧! 1 Git工具安装 Windows版本安装: 安装包下载地址:https://gitforw

基于django的视频点播网站开发-step1-项目介绍

本文将会对该项目进行一个简单的介绍,包括项目名称.项目背景.项目功能.技术栈等等. 项目名称 基于django的视频点播网站开发 项目背景 学习完毕python和django之后,想找个项目练练手,本来想写个博客项目练手,无奈别人已经写过了,所以笔者就打算写一个视频点播网站,因为笔者非常喜欢观看视频,尤其是YouTube.bilibili都是笔者非常喜欢的视频网站,所以想自己实现一个简单的视频点播网站,学以致用. 项目功能 本项目分为前台和后台 前台功能 视频列表展示 视频播放详情 详情评论 个

使用C#调用PI-SDK进行基于PI的开发

一.概述 PI-SDK(Plant Information Software Develop Kit)是OSI公司提供的基于面向对象的访问PI数据库的软件开发工具包,它可以对以下数据库进行读写: ²        PIPoints (PI point table) ²        StateSets (Digital sets table) ²        PIUsers   (User table) ²        PIGroups (Groups table) ²        PIM

基于django的视频点播网站开发-step3-注册登录功能

用户注册登录是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果.在本讲中,我们会用到user中的用户授权方面的一些函数,还会对django中的user进行扩展,以及django中的form验证. 效果展示 注册页面 登录页面 创建users应用 django的设计哲学是,一个应用只提供一种功能,比如users应用只提供用户相关功能,comment应用只提供评论相关功能,这能提高代码的重复利用率. 在django中,只

基于Flash与window平台本地程序通信实现媒体流发布

1 开发一种window平台本地发布媒体流客户端程序,该程序完成音视频采集.DSHOW虚拟摄像头.虚拟视频功能.编码.发布媒体流媒体.伴奏管理等功能,本程序安装时将虚拟摄像头注册到window系统. 2 window平台本地程序在运行后,建立6个信令监听socket,为防止网络安全软件或服务发出绑定端口告警从而影响用户体验与防止与本机的其它程序的监听端口冲突与,6个信令监听socket绑定网络地扯127.0.0.1.端口分别为843(用于Flash快速获取策略访问控制文件),12168,2216

一个实现浏览器网页与本地程序之间进行双向调用的轻量级、强兼容、可扩展的插件开发平台—本网通

通过本网通插件平台可实现在网页中的JavaScript脚本无障碍访问本地电脑的硬件.调用本地系统的API及相关组件,同时可彻底解决ActiveX组件在Chrome.FireFox.Opera.Edge.Safari等浏览器各版本的兼容使用问题. 系统兼容性:1.全面兼容Windows XP.Vista.7.8.10等各版本桌面系统:2.全面兼容Windows Server 2003.2008.2012.2016等各版本服务器系统:3.Linux.Mac.安卓等系统理论上也是可行的,欢迎熟悉这些平

Js调用本地程序

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script language=javascript> function Open() { var wsh=new ActiveXObject("wscript.shell&

Firefox中利用javascript调用本地程序

http://blog.csdn.net/jensonhjt/article/details/1765557 script>function hello () {  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  var file = Components.classes["@mozilla.org/file/local;1"].createInstance(

c# windows程序调用本地输入法

原文:c# windows程序调用本地输入法 ?? 好久没写博客了,今天写了一个DEMO,在WINform程序中调用本地输入法,并在窗体中显示出来.其中使用到了很多API,现把代码贴出来,供大家参考 private string _CurrentImeHandleStr = ""; public delegate bool EnumResNameProc(IntPtr hModule, IntPtr nType, StringBuilder sName, IntPtr lParam);