Python下的数据库管理、socket以及多线程的使用

本文介绍了Python中如何进行MySQL数据库的操作,包括增删查改,并展示了数据同步的例子。接着,讲解了如何使用Socket进行服务器监听,以及线程的概念和应用,包括线程在进程中的角色及创建线程的示例。
摘要由CSDN通过智能技术生成

一、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()

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值