2017年2月

Win10/Linux下安装MySQLdb

MySQL_python下载页面:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
64位下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/tugh5y6j/MySQL_python-1.2.5-cp27-none-win_amd64.whl
32位下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/tugh5y6j/MySQL_python-1.2.5-cp27-none-win32.whl

使用pip安装whl文件:
pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
pip.png
import MySQLdb验证成功;
MySQLdb.png

Redhat/CentOS直接pip install MySQL-python debian/ubuntu直接pip install MySQL-python 即可·

如有error: command 'gcc' failed with exit status 1 类似报错,需安装python-devel
即yum install python-devel。

Flask入门系列三:View层Jinja2模板引擎

Flask的view层其实就是MVC中的V,即模板,使用Jinja2模板引擎
模板继承举例代码:
run.py

#!/usr/bin/env python
#encoding:utf-8
from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/hello/')
@app.route('/hello/<name>/<xm>')
def hello(name=None,xm=None):
    return render_template('hello.html' , name = name , xm = xm)

run.py里面定义的函数hello()并不是直接返回结果,而是使用render_template()方法渲染模板,第一个参数传'hello.html'指向你想渲染的模板名称,第二个参数'name'、第三个参数'xm'是传到模板去的变量,变量可以传多个。



---阅读剩余部分---

HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE说明

超文本传输协议(HTTP, HyperText Transfer Protocol)是一种无状态的协议,它位于OSI七层模型的传输层。HTTP客户端会根据需要构建合适的HTTP请求方法,而HTTP服务器会根据不同的HTTP请求方法做出不同的响应。

  1. HTTP版本与HTTP请求方法
    在HTTP的发展过程中,出现了很多HTTP版本,其中的大部分协议都是向下兼容的。在进行HTTP请求时,客户端在请求时会告诉服务器它采用的协议版本号,而服务器则会在使用相同或者更早的协议版本进行响应。

---阅读剩余部分---

start with connect by prior 递归查询(树形结构遍历)用法

ORACLE 提供了一个有趣的功能 connect by 子句,它可以对具有家族树结构的分枝进行排序。它的用途有机构或公司的各层结构,财务的科目代码等。

要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子。

语句:

select ... from tablename
 start with 条件1 
 connect by 条件2  #条件2:{col1=prior col2 | prior col1 =col2} 说明谁是父,谁是子
 where 条件3; 
例: 
select * from table 
start with org_id = 'HBHqfWGWPy' 
connect by prior org_id = parent_id;

---阅读剩余部分---

Flask入门一 'Hello World'

每一种语言开始学习都是从hello world开始,需安装python、pip、Flask,最简单的helloworld代码如下:

#!/usr/bin/env python
# -*- coding=utf-8 -*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0')

保存成helloworld.py,打开控制台或命令行,到该文件目录下,运行:
python helloworld.py


---阅读剩余部分---

Flask微框架简介

Flask 永远不会包含数据库层,也不会有表单库或是这个方向的其它东西。 Flask 只建立 Werkezug 和 Jinja2 的桥梁,前者实现一个合适的 WSGI 应用,后者处理模板。 Flask也绑定了一些通用的标准库包,比如 logging 。其它所有一切取决于扩展。

为什么是这样?众口难调,因此 Flask 不强制把特异的偏好和需求囊括在核心里。 大多数 web 应用都可以说需要一个模板引擎,而并不是每个应用都需要一个 SQL 数据库。

---阅读剩余部分---

Oracle查看被锁的表和解锁

--以下几个为相关表

SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process ;
SELECT * FROM v$locked_object;
SELECT * FROM all_objects;
SELECT * FROM v$session_wait;

--查看被锁的表

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

或者用这个sql

select 'blocker('||lb.sid||':'||sb.username||')-sql:'|| qb.sql_text blockers, 
'waiter ('||lw.sid||':'||sw.username||')-sql:'|| qw.sql_text waiters 
from v$lock lb, 
v$lock lw, 
v$session sb, 
v$session sw, 
v$sql qb, 
v$sql qw 
where lb.sid=sb.sid 
and lw.sid=sw.sid 
and sb.prev_sql_addr=qb.address 
and sw.sql_address=qw.address 
and lb.id1=lw.id1 
and sw.lockwait is not null 
and sb.lockwait is null 
and lb.block=1 ;

--查看那个用户那个进程照成死锁

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

--查看连接的进程

SELECT sid, serial#, username, osuser FROM v$session;

--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;

如果上面SQL执行时间太长可以用下面这个:

select object_name,machine,s.sid,s.serial# 
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;

这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,
任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

--杀掉进程 sid,serial

alter system kill session 'sid,serial#'; 
alter system kill session'210,11562';

如果上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:

select spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid=210 (210是上面的sid)

直接用root身份执行命令:

kill -9 12345(即上面查询出的spid)

Oracle导出数据库 expdp命令参数详解

Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种,今天首先来实践一下数据泵备份与还原。数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份。oracle10g开始推出了数据泵(expdp/impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高。

---阅读剩余部分---

Oracle导入数据库 imdbp命令参数详解

Oracle数据导入导出impdp/expdp就相当于oracle数据还原与备份,expdp命令可以把数据从远程数据库服务器导出到本地的dmp文件,impdp命令可以把dmp文件从本地导入到远处的数据库服务器中,利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

---阅读剩余部分---

Oracle清理截断监听日志文件listener.log

在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大,在老爷机32bit Linux或Unix系统下面,超过2G以后会导致监听服务进程(tnslsnr)append write日志文件出错,原因是一些32bit OS自带的文件系统不支持2GB以上的文件,所以会报错;

---阅读剩余部分---

oracle使用impdp导入dmp数据文件时若表存在时的解决方法

当使用IMPDP完成数据库导入时,如遇到表已经存在时,Oracle提供给我们如下四种处理方式:
1.忽略(SKIP,默认行为);
2.在原有数据基础上继续增加(APPEND);
3.先DROP表,然后创建表,最后完成数据插入(REPLACE);
4.先TRUNCATE,再完成数据插入(TRUNCATE)。





---阅读剩余部分---

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它