amy_888 发表于 2018-8-16 08:41:50

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

------------------------------------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)
  
if __name__=='__main__':
  
h='0.0.0.0'
  
p=9001
  
s=SocketServer.ThreadingTCPServer((h,p),mysocketserver)
  
s.serve_forever()


页: [1]
查看完整版本: 第十一节:python mysql交互、socket、多线程