在Python3 下不能直接 pip install MySQLdb?
本文给出两种常用的解决方案
文章目录:
解决方案 1 之 mysqlclient
解决方案 2 之 pymysql
解决方案 1 之 mysqlclient
可以使用下面的指令替换
pip install mysqlclient
下面直接测试
import MySQLdb
发现可以直接导入 MySQLdb
了,相当于安装了 MySQLdb
这个依赖库
再模拟一个 Tornado 框架下注册的功能进行测试
首先需要安装 tornado
pip install tornado
示例代码 test_mysqldb.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@version: v1.0
@author: Evan
@time: 2019/12/3 16:31
use `pip install mysqlclient` to install MySQLdb
"""
import tornado.web
import tornado.ioloop
import MySQLdb
"""
:param str host: host to connect
:param str user: user to connect as
:param str password: password to use
:param str passwd: alias of password, for backward compatibility
:param str database: database to use
:param str db: alias of database, for backward compatibility
:param int port: TCP/IP port to connect to
:param str unix_socket: location of unix_socket to use
:param dict conv: conversion dictionary, see MySQLdb.converters
:param int connect_timeout:
...
"""
def _get_connect():
return MySQLdb.connect(
host='127.0.0.1',
user='root',
passwd='root',
db='tornado_test',
port=3306
)
class RegisterHandler(tornado.web.RequestHandler):
def initialize(self, connect):
self.connect = connect
def get(self):
self.render('templates/register.html')
def post(self):
# 获取请求参数
username = self.get_body_argument('account')
password = self.get_body_argument('password')
# 将数据插入到数据库中
try:
cursor = self.connect.cursor()
# MySQL获取系统当前时间函数:sysdate() / now()
cursor.execute('insert into t_user values(null, "{0}", "{1}", sysdate())'.format(username, password))
self.connect.commit()
self.write('注册成功!')
except Exception as ret:
print(ret)
self.connect.rollback()
self.redirect('/register/')
def main():
app = tornado.web.Application([
(r'^/register/$', RegisterHandler, {'connect': _get_connect()}),
])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()
前端页面 templates/register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/register/" enctype="multipart/form-data" method="POST">
用户名:<input type="text" name="account"/> <br/><br/>
密 码: <input type="password" name="password"/> <br/><br/>
  <input type="submit" value="注册"/>
</form>
</body>
</html>
数据库创建 sql
create database tornado_test default CHARACTER set utf8;
use tornado_test;
在用数据库可视化软件(如 Navicat)创建数据表 t_user
,也可直接使用 sql
来创建
解决方案 2 之 pymysql
首先安装依赖包
pip install pymysql
然后将下面的代码放入__init__.py
(projectname/__init__.py
)
import pymysql
pymysql.install_as_MySQLdb()
此解决方案在之前的 Django 开发中使用过