一、mysql的数据管理
1.增加数据
import MySQLdb
# 打开门
conn = MySQLdb.connect(host='localhost',user = 'root',passwd='linux',db='python')
# 伸出手
cur = conn.cursor()
# 操作数据
sql = 'insert into userInfo(id,name) values(%s,%s)'
pamams = ('1','wn')
recount = cur.execute(sql,pamams)
#提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关门
conn.close()
print recount
2.插入多条数据
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='linux',db='python')
# 伸出手,创建了一个手
cur = conn.cursor()
# 操作数据
li = [('2','hahaha'),
('3','lalala')
]
sql = 'insert into userInfo(id,name) values(%s,%s)'
recount = cur.executemany(sql,li)
# 提交请求
conn.commit()
cur.close()
conn.close()
print recount
3.查找数据
import MySQLdb
# 打开门
conn = MySQLdb.connect(host='localhost',user='root',passwd='linux',db='python')
# 伸出手,创建了一个手
cur = conn.cursor()
# 这个操作显示有多少行数据被操作
recont = cur.execute('select * from userInfo')
data = cur.fetchall()
# 把手伸回来
cur.close()
# 把门关上
conn.close()
print recont
print data
4.删除数据
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='linux',db='python')
# 伸出手,创建了一个手
cur = conn.cursor()
# 操作数据
sql = 'delete from userInfo where id = %s'
params = (3,)
recount = cur.execute(sql,params)
# 提交请求
conn.commit()
cur.close()
conn.close()
5.改数据
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='linux',db='python')
# 伸出手,创建了一个手
cur = conn.cursor()
# 操作数据
sql = 'update userInfo set id = %s where name = %s'
params = ('1','xiaoming',)
recount = cur.execute(sql,params)
# 提交请求
conn.commit()
cur.close()
conn.close()
print recount
6.将一方的数据进行修改,另外一方随之修改
id为1的用户将100还给了id为2的用户
import MySQLdb
conn = MySQLdb.Connect(host='localhost',user='root',passwd='linux',db='python')
cur = conn.cursor()
sql = 'update money set money = %s where id = 1'
params = ('0',)
recount = cur.execute(sql,params)
# conn.commit()
sql = 'update money set money = %s where id = 2'
param = ('100',)
recount = cur.execute(sql,param)
conn.commit()
二、socket的使用(服务器进行监听)
客户端:
import socket
# 创建一个socket对象
client = socket.socket()
# 创建连接
ip_port = ('127.0.0.1',9999)
client.connect(ip_port)
while True:
# 获取数据
data = client.recv(1024)
print data
# 发送数据
inp = raw_input('client:')
client.send(inp)
if inp == 'exit':
break
服务端
import socket
# 1.创建socket对象
sk = socket.socket()
# 2.绑定端口和ip
ip_port = ('127.0.0.1',9999)
sk.bind(ip_port)
# 3.最大连接数
sk.listen(5)
while True:
# 获取客户端的ip和端口号
conn,address = sk.accept()
conn.send('hello')
flag = True
while flag:
data = conn.recv(1024)
print data
if data == 'exit':
flag = False
conn.send('你好,有什么可以帮您')
conn.close()
结果显示:
三、线程
线程操作系统能够进行运算调度的基本单位(程序执行流的最小单元)
它被包含在进程当中,是进程中的实际运作单位ie,一个进程可以并发
多个线程,每个线程并行执行不同的任务
(线程是进程中的一个实体,是被系统独立调度和分派的基本单元)
每一个进程启动时都会最先产生一个线程,叫主线程
然后主线程会再创建其他的子线程
示例1:
import threading
from time import ctime,sleep
def music(a):
for i in range(2):
print '我正在听音乐%s. %s' %(a,ctime())
sleep(1)
def movies(b):
for i in range(5):
print '我正在看电影%s. %s' %(b,ctime())
sleep(5)
print 'all over'
# music('告白气球')
# movies('我不是药神')
t1 = threading.Thread(target=music,args=('告白气球',))
t1.start()
t2 = threading.Thread(target=movies,args=('我不是药神',))
t2.start()
示例2:
from threading import Thread
import time
def Foo():
for item in range(50):
print item
time.sleep(1)
print 'before'
t1 = Thread(target=Foo)
t1.setDaemon(True)
t1.start()
print 'after'
time.sleep(10)
示例3:
from threading import Thread
import time
def Foo():
for item in range(20):
print item
time.sleep(2)
print 'before'
t1 = Thread(target=Foo)
t1.start()
# 主线程执行到join()就不再往下面执行了,直到子线程执行完
t1.join()
print 'after'
示例4:
def run(n):
time.sleep(1)
global num
loc.acquire()
num += 1
print '%s\n' %num
loc.release()
loc = threading.Lock()
for i in range(1500):
t = threading.Thread(target=run,args=(i,))
t.start()