本文将用实例讲解使用Python3编写简单的服务器程序,实现socket网络编程与MySQL数据库连接。本文的目的在于对网上众多博文的总结,以及对socket编程和MySQL连接与操作的学习总结。 本文不会像众多博文那样,如同教科书一般,详细地讲解socketserver和pymysql模块中有什么东西、各自有什么用,而是实例中用到了什么就讲什么。至于模块的详细讲解与分析,可以看看其他的博文或者源码。
数据库连接与操作
class Database:
def __init__(self, host, user, password, database):
try:
self.conn = pymysql.connect(host, user, password, database)
self.cursor = self.conn.cursor
except:
print("Error: connect mysql error")
def self_sql(self, sql):
try:
self.cursor.execute(sql)
self.conn.commit()
return self.cursor.fetchall()
except:
return -1
Python3使用pymysql模块实现MySQL数据库连接与操作,而Python2连接MySQL需要使用MySQLdb模块。使用pip安装:
pip3 install pymysql
使用前先import。
下面讲解上面的代码:
初始化函数init()需要传递的参数分别为数据库服务器的地址、账户、密码和库名。connect()连接数据库,返回一个Connection对象(有兴趣的可以翻翻源码),之后可以通过该对象的cursor来操作数据库。
在Database类中定义了一个self_sql()函数,参数sql为SQL语句,类型是字符串。execute()执行SQL;fetchall()会获得SQL执行返回的所有结果。若要只获得SQL执行返回的第一个结果,可用fetchone()。SQL执行返回的数据是元组,需要注意处理。
socketserver
class Server(socketserver.BaseRequestHandler):
def __init__