第十一节:python mysql交互socket多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十一节:python mysql交互socket多线程相关的知识,希望对你有一定的参考价值。

python个人笔记,纯属方便查询。

------------------------------------python mysql交互--------------------------------------- 
#查询:
import MySQLdb
try:
        conn=MySQLdb.connect(host=‘10.86.10.21‘,user=‘root‘,passwd=‘mysql‘,db=‘python‘,port=3306)
        cur=conn.cursor()
        cur.execute(‘select * from test111‘)
        print cur.fetchall()    #取全部行
        print cur.fetchmany(5)  #取前5行
        cur.close()
        conn.close()
except MySQLdb.Error,e:
        print ‘MySQL Error Msg:‘,e
        
#建表:单条插入
import MySQLdb
try:
        conn=MySQLdb.connect(host=‘10.86.10.21‘,user=‘root‘,passwd=
‘mysql‘,port=3306)
        cur=conn.cursor()
        cur.execute(‘create database if not exists darren‘)
        conn.select_db(‘darren‘)
        cur.execute(‘create table test(id int(10),info varchar(255)
)‘)
        value = (‘1‘,‘hidarren‘)
        print value
        cur.execute(‘‘‘insert into test values(%s,%s)‘‘‘,value)
        conn.commit()
        cur.close()
        conn.close()
except MySQLdb.Error,e:
        print ‘MySQL Error Msg:‘,e
#建表,插入多条数据。
import MySQLdb
try:
        conn=MySQLdb.connect(host=‘10.86.10.21‘,user=‘root‘,passwd=
‘mysql‘,port=3306)
        cur=conn.cursor()
        cur.execute(‘create database if not exists darren‘)
        conn.select_db(‘darren‘)
        cur.execute(‘create table test(id int(10),info varchar(255)
)‘)
        value = (‘1‘,‘hidarren‘)
        values_list=[]
        for i in range(20):
        values_list.append((‘1,darren‘))
        cur.executemany (‘‘‘insert into test values(%s,%s)‘‘‘,value)
        conn.commit()
        cur.close()
        conn.close()
except MySQLdb.Error,e:
        print ‘MySQL Error Msg:‘,e
        
#############################################################
#############################################################
--------------------------------python socket-------------------------------------------
###服务端:
import socket
HOST=‘‘
PORT=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen(1)
conn,addr=s.accept()

print ‘connected by‘,addr
while 1:
    data=conn.recv(1024)
    if not data:break
    conn.sendall(data)
conn.close()
#end

###客户端:
import socket
host=‘‘
port=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))

s.sendall(‘hello,world‘)
data=s.recv(1024)
s.close()
print ‘received‘,repr(data) 
#end
#注意:此处python脚本命名不能为socket.py,如果已经创建提示出错:AttributeError: ‘module‘ object has no attribute ‘AF_INET‘
则rm -rf socket.pyc即可解决。
-------------------------------------
#客户端另一种情况:
import socket
host = ‘10.86.10.19‘
port = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
while 1:
        user_input = raw_input(‘msg to send::‘).strip()
        s.sendall(user_input)
        data=s.recv(1024)
        #print ‘received:‘,repr(data) 
        print ‘received:‘,data
s.close()
#end 
--------------------------------------

服务端:a客户端连接服务端以后如果不断,b不可以连接,b连接以后a不能连接。
import socket
host = ‘0.0.0.0‘
port = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(1)
while 1:
        conn,addr=s.accept()
        while 1:
                data=conn.recv(1024)
                if not data:break
                conn.sendall(data)
conn.close()
#end


###################python socket多线程##################
#服务端:
#!/usr/bin/env python
import SocketServer
class mysocketserver(SocketServer.BaseRequestHandler):
 def handle(self):
 print ‘got a new conn from‘,self.client_address
 while True:
 data = self.request.recv(1024)
 if not data:break
 print ‘recv:‘,data
 self.request.send(data.upper())        #upper为大写
if __name__==‘__main__‘:
h=‘0.0.0.0‘
p=9001
s=SocketServer.ThreadingTCPServer((h,p),mysocketserver)
s.serve_forever()
#end

#客户端:
import socket
host=‘10.86.10.17‘
port=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
while True:
        user_input=raw_input("pelase input you want to:").strip()
        if len(user_input) == 0:continue
        s.sendall(user_input)
        data=s.recv(1024)
        print ‘received:‘,repr(data)             #repr为格式化打印
s.close()
 ##################python socket ssh####################
import commands 
commands.getoutput(‘ls‘)        #输入命令,返回的是结果。
commands.getstatusoutput(‘ls‘)    #输入命令返回结果加状态


import SocketServer
class mysocketserver(SocketServer.BaseRequestHandler):
 def handle(self):
 print ‘got a new conn from‘,self.client_address
 while True:
 data = self.request.recv(1024)
 if not data:break
 print ‘recv:‘,data
 cmd_result=commands.getstatusoutput(data)
 self.request.send(len(cmd_result))
 self.request.sendall(cmd_result[1])
if __name__==‘__main__‘:
h=‘0.0.0.0‘
p=9001
s=SocketServer.ThreadingTCPServer((h,p),mysocketserver)
s.serve_forever()


本文出自 “小东哥” 博客,谢绝转载!

以上是关于第十一节:python mysql交互socket多线程的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记第十一节(迭代和其他)

python学习笔记第十一节(迭代和其他)

Python基础学习第十一节 内置函数详解

第十一节 双端队列的概念和python代码实现

第十一节:视图和临时表

嵌入式Linux从入门到精通之第十一节:进程间通信