Python3 环境下使用 MySQLdb 库

在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


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
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 来创建
Python3 环境下使用 MySQLdb 库_第1张图片



解决方案 2 之 pymysql

首先安装依赖包
pip install pymysql

然后将下面的代码放入__init__.pyprojectname/__init__.py

import pymysql
pymysql.install_as_MySQLdb()

此解决方案在之前的 Django 开发中使用过

你可能感兴趣的:(Python,Full,Stack,Django,MySQL)