1 centos下 安装MySQLdb模块

 a 首先需要先安装 setuptool
b yum install -y mysql_devel 头文件
c yum install -y python_devel 头文件 cd MySQLdb
python setup.py build
python setup.py install

1.1、数据库连接

MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象:

conn=MySQLdb.connect(host="localhost",user="root",passwd="jb51",db="test",charset="utf8") #建议使用键值字典形式,这样不用害怕顺序问题

比较常用的参数包括:
host:数据库主机名.默认是用本地主机
user:数据库登陆名.默认是当前用户
passwd:数据库登陆的秘密.默认为空
db:要使用的数据库名.没有默认值
port:MySQL服务使用的TCP端口.默认是3306
charset:数据库编码

commit() 提交
rollback() 回滚

close() 关闭连接

cursor()返回游标,自动开启一个事务后者使用 autoCommit(false)关闭自动提交

1.2、cursor方法执行与返回值

//执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
execute(self, query, args)

//接收全部的返回结果行.
fetchall(self)

//接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据
fetchmany(self, size=None)

//返回一条结果行
fetchone(self)

//这是一个只读属性,并返回执行execute()方法后影响的行数
rowcount

2 socket

 a 创建 sk = socket.socket();

#sk.setblocking(0) 非阻塞,accept和recv时一旦无数据,则报错

b 绑定 sk.bind(('localhost,8080')) 在AF_INET下,以元组(host,port)的形式表示地址

c 监听队列 sk.listen(back) 开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量

d connect,address = sk.accept()  接收TCP 客户的连接(阻塞式)等待连接的到来,返回连接对象及地址

e 连接 sk.connect(address)

f 接收数据 sk.recv(bufsize) 接收数据大小

g 发送数据 sk.send(string)

h 关闭 sk.close()

server:

#!/usr/bin/env python
# -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1',8080) sk = socket.socket()
sk.bind(ip_port)
sk.listen(5)
flas = true
while flag:
conn,addr = sk.accept() client_data = conn.recv(1024)
print client_data
conn.sendall('test') conn.close()

client:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
ip_port = ('127.0.0.1',8080) sk = socket.socket()
sk.connect(ip_port) sk.sendall('来了') server_reply = sk.recv(1024)
print server_reply sk.close()

3 线程(threading)

start            线程准备就绪,等待CPU调度

setName      为线程设置名称

getName      获取线程名称

setDaemon   设置为后台线程或前台线程(默认)
                   如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止
                    如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止

join              逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义

run              线程被cpu调度后自动执行线程对象的run方法

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import threading def show(arg):
print 'thread'+str(arg) for i in range(3):
t = threading.Thread(target=show, args=(i,)) #也可以使用继承方式使用多线程,重写run方法
t.start() print 'main thread stop'

3.1 线程锁

  a lock = threading.Lock()

lock = threading.RLock()可多次获取锁,释放的时候也需要几次

b lock.acquire() 获取锁

c lock.release()释放锁

3.2 线程事件(事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为 False,那么当程序执行 event.wait 方法时就会阻塞,如果“Flag”值为True,那么event.wait 方法时便不再阻塞)

a e = threading.Event()

b e.wait() 阻塞

c e.set() 设置flag=true

d e.clear() 清除set()的值,也就是重置flag

3.3 队列

a queue = Queue(maxsize) 队列最大值

b queue.empty()是否为空

c queue.qsize()队列大小

d queue.full() 队列是否达到最大值

e queue.put()/get()/clear() 添加/获取/清空

4 进程(进程各自持有一份数据,默认无法共享数据)

multiprocessing import Process 

4.1使用方式与线程类似,由于进程数据独立,可使用multiprocessing.Array/Queue/Value/Manager进行数据共同管理,当然也可使用reids

4.2 锁机制与线程类似

4.3 进程池(multiprocessing.Pool)

p = Pool(n) 进程数量

res = p.apply_async(func,args,callback)/apply() 异步/同步执行

res.get(time) 获取进程返回数据,time:阻塞时间

python MySQLdb、socket与进线程的更多相关文章

  1. python基础-12 多线程queue 线程交互event 线程锁 自定义线程池 进程 进程锁 进程池 进程交互数据资源共享

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  2. python中的进程、线程(threading、multiprocessing、Queue、subprocess)

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  3. 转:Python 的 Socket 编程教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs. ...

  4. Python 之socket的应用

    本节主要讲解socket编程的有关知识点,顺便也会讲解一些其它的关联性知识: 一.概述(socket.socketserver): python对于socket编程,提供了两个模块,分别是socket ...

  5. python运维开发(十一)----线程、进程、协程

    内容目录: 线程 基本使用 线程锁 自定义线程池 进程 基本使用 进程锁 进程数据共享 进程池 协程 线程 线程使用的两种方式,一种为我们直接调用thread模块上的方法,另一种我们自定义方式 方式一 ...

  6. Python之路,进程、线程、协程篇

      本节内容 进程.与线程区别 cpu运行原理 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  7. 「Python」socket指南

    开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...

  8. python操作socket

    Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...

  9. Python的socket网络编程(一)

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 先写首诗,抒抒情. 一. 食堂.校园 见过你那么多次 卑微的我 只敢偷偷瞄上一眼 心扑通 扑通 春天真好 不是么 二. 学子 ...

随机推荐

  1. java 、Android 提交参数转码问题

    1.解决Android.JAVA.ajax提交中文.URL中文参数传递后的乱码问题的解决办法  2.JAVA 中URL链接中文参数乱码的处理方法  3.JAVA URL中带有中文时的处理 在提交参数的 ...

  2. 14.2 InnoDB and the ACID Model

    14.2 InnoDB and the ACID Model ACID 模型是一组数据库设计原则,强调可靠性方面对于商业数据和关键人物. MySQL 包含组件比如InnoDB存储引擎坚持ACID 模型 ...

  3. POJ2115 C Looooops(数论)

    题目链接. 分析: 数论了解的还不算太多,解的时候,碰到了不小的麻烦. 设答案为x,n = (1<<k), 则 (A+C*x) % n == B 即 (A+C*x) ≡ B (mod n) ...

  4. delphi对ini文件的操作(转载 万一)

    ini 文件操作记要(1): 使用 TIniFileunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gr ...

  5. Types of AOP

    There are two distinct types of AOP: static and dynamic. The difference between them is really the p ...

  6. CPU使用率计算

    昨天接到临时任务,需要将一个工作线程执行真正工作的时机推迟到CPU空闲时执行.当时第一感觉认为是将线程优先级设置为空闲级别就行了,以为只有CPU空闲下来才会去跑这个线程,实际上应该不是,毕竟即时是空闲 ...

  7. 辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网

    辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网 辛巴达:帮电商打造ZARA式开放供应链体系

  8. Purchase Document Open Interface(PDOI)

    PO模块也有自己的接口表,多用于把其他业务系统在Oracle EBS系统生成采购订单记录. Table Name Description Type PO_HEADERS_INTERFACE This ...

  9. Oracle执行计划——all_rows和first_rows(n) 优化器模式

    0. 环境创建 SQL> create usertest identified by test 2 default tablespace users 3 temporary tablespace ...

  10. 如何安装Windows 8系统中的telnet组件

    知识点分析:Window 8 系统中Telnet没有默认安装,成为了一个可选组件,“启用或关闭Windows功能”下即可添加此组件. 操作步骤:1.系统桌面下同时按住键盘上 “Windows” 和“X ...