一、图形界面
1、Tkinter
2、turtle
二、网络编程
1、tcp编程
(1)、 客户端
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#AF_INET表示利用的ipv4,AF_INET6表示用ipv6。SOCK_STREAM表示面向流的tcp连接
s.connect(addr, port)#与服务器建立链接,addr表示服务器地址,port表示服务器的进程端口
s.send(data)#向服务器发送数据
buffer = []
while True:
rec_data = s.recv(max) # 一次性接收max个大小的数据
if not rec_data or rec_data.decode('utf-8') == ‘end':
break
print(rec_data.decode('utf-8'))
buffer.append(rec_data.encode('utf-8'))
s.send('exit')#向服务器发送结束
s.close()#关闭链接
(2)服务端
import socket,time,threading
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((addr, port))#接收的是一个tuple,与本服务器的ip地址和端口绑定
s.listen(5)#监听,等待连接,最大连接数为5
print('Waiting for connection...')
def tcplink(sock, addr):
print('Accept new connection from %s:%s.' % addr)#addr是一个tupple
req = s.recv(1024)
print('Receive data: %s from client.' % req.decode('utf-8'))
for name in ['jamson', 'bob', 'marry', 'Tom', 'end']:
s.send(name.encode('utf-8'))
time.sleep(2)
r = s.recv(1024)
if not r or r.decode('utf-8') == 'exit' :
s.close()
while True:
sock,addr = s.accept()
t = threading.Thread(target = tcplink, args = (sock, addr))
t.start()
2、udp编程:
(1)服务端udp_server.py
import socket,os
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#SOCK_DGRAM表示为udp
print('Current pid is %s.' % os.getpid())
s.bind(('127.0.0.1',9990)
while True:
data,addr = s.recvfrom(1024)
print('Receive from %s:%s.' % addr)
s.sendto(b'Hello,%s' % data, addr)#参数为数据和一个tuple地址(ip, port)
(2)客户端udp_client.py
import socket
s = socket.socket(socket.AF_INET, scoket_SOCK_DGRAM)
for data in [b'Jamson', b'Tom', b'James']
s.sendto(data,('127.0.0.1',9990))
print(s.recvfrom(1024).decode('utf-8'))
s.close()
三、数据库
1、Sqlite3
python有自带的数据系统sqlite3,小型数据库,主要用于嵌入式系统和移动应用
import sqlite3
conn = sqlite3.connect('test.db') #如果没有该数据库,会自动创建一个数据库
cursor = conn.cursor()
cursor.execute('create table user (id varchar(10) primary key, account varchar(20), password varchar(20))')
cursor.execute('insert into user (id, account, password) values(\'1\', \'Jamsonwan\', \'jamson123gbk\')' )
cursor.execute('select * from user')
values = cursor.fetchall()#结果是一个list,每一个元素是一个tuple
cursor.close()
conn.commit()#提交事务
conn.close()
2、mysql
(1)、MySQL的安装以及配置
首先更新系统软件包:sudo apt-get update
下载安装MySQL: sodo apt-get install mysql-server
配置mysql:sudo mysql_secure_installation #请记住登录mysql的密码
创建普通用户:
sudo mysql -r root -p
create user 'jamson' @'localhost' identified by 'jamson' ; #新建本地用户jamson,密码为jamson。若要远程,请把localhost换成远程的IP地址
grant all on *.* to 'jamson' @'localhost' with grant option; #给用户jamson授权
这样就可以终端登录mysql。mysql -u jamson -p
(2)、python的mysql
下载MySQL驱动: pip3 intall mysql-connector
import mysql.connector
conn = mysql.connector.connect(user='jamson', password = 'jamson', database='test')#其余操作与sqlite一样
cursor = conn.cursor()
cursor.execute('Create table user(id int primary key, name varchar(20)')
cursor.execute('Insert into user(id,name) values (%s, %s)', [1, 'jamson'])
conn.commit()
cursor.close()
conn.close()
执行一次insert,delete等操作要commit一次,提交事务
3、orm框架 sqlalchemy