zoukankan      html  css  js  c++  java
  • Windows下Python添加MySQLdb扩展模块

    [更新 2012-09-16]
    这里可以下载已经打包好的EXE文件,http://sourceforge.net/projects/mysql-python/(国内需穿越才可访问)
    DBank备份下载地址:http://dl.vmall.com/c0bgsx0s0p (Python 2.7版本 MySQL-python-1.2.3.win32-py2.7.msi)

    为了给Python装个MySQLdb模块(这里说的是Windows),真是破费了不少时间。本来Python自带SQLite数据库模块,使用起来也挺方便的,但是SQLite不支持远程访问啊!!!所以只能用MySQL了。下面详细描述一下配置过程,以后可以参考!

    安装MySQL

    安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方(本来是有的,不过有替代方案,见后文)。一个下载地址:

    http://xiazai.xiazaiba.com/Soft/M/MySQL_5.5.20_win32_XiaZaiBa.zip

    安装SetupTools

    下载地址:http://pypi.python.org/pypi/setuptools 如果你不先安装SetupTools而是直接安装MySQLdb,那么很有可能会提示如下错误:

    ImportError: No module named setuptools

    上面的地址可以直接下载到exe,所以直接执行就是了。

    安装MySQL-Python

    MySQL-Python也就是MySQLdb了。可以去http://pypi.python.org/pypi/MySQL-python#downloads下载到源码(没有EXE了),解压后,打开cmd来到MySQL-Python的目录,执行如下命令:

    setup.py build
    setup.py install

    如果不出意外的话,会提示如下错误:

    E:CodePythonmysql>setup.py install
    Traceback (most recent call last):
      File "E:CodePythonmysqlsetup.py", line 15, in <module>
        metadata, options = get_config()
      File "E:CodePythonmysqlsetup_windows.py", line 7, in get_config
        serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
    WindowsError: [Error 2]

    一个可能可行的解决方案:打开setup_windows.py,然后将注册表操作的两行代码注释掉,并添加一行代码:

    7
    8
    9
    
        #serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
        #mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location')
        mysql_root = "C:Program FilesMySQLMySQL Server 5.5" #MySQL目录

    接下来,再执行上面提到的build命令,如果MySQL的版本好的话,就没问题。不过很有可能提示如下错误:

    ......
    _mysql.c(34) : fatal error C1083: 无法打开包括文件:“config-win.h”: No such file or directory
    ......

    网上有人说,重装MySQL并把“C Include Files / Lib Files”勾选上,我这里依然有问题。这里推荐下载MySQL Connector

    http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-6.0.2-win32.msi/from/http://ftp.jaist.ac.jp/pub/mysql/

    安装好之后,把上面的mysql_root改为MySQL Connector的目录:

    7
    8
    9
    
        #serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
        #mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location')
        mysql_root = "C:Program FilesMySQLMySQL Connector C 6.0.2" #MySQL Connector C 6.0.2目录

    然后再build一般就OK了,接着install即可。

    关于重装MySQL

    我开始并没有安装MySQL Connector C 6.0.2,而是选择了重装MySQL,也是一个烦人的过程。如果你卸载完MySQL之后重新安装,在MySQL配置的最后一步,很可能提示“ERROR 1045”的一个错误。这是因为上一次的配置文件没有删除。

    可以在卸载MySQL后删除Program Files下的MySQL目录,如果是Windows 7,还需要删除C:ProgramDataMySQL(非常重要),XP一般在C:Documents and SettingsAll UsersApplication Data下。

    CMySql类

    进入cmd,打开python,尝试import看是否有异常:

    import MySQLdb

    没有异常就说明安装MySQLdb成功了。
    下面是我自己简单写的一个CMySql类,可以对MySQL进行简单的增删改查:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
     
    """CMySql类,简单的MySQL增删改查
    @version: 0.1
    @author: 代码疯子
    @contect: stackexploit[AT]gmail.com
    @see: http://www.programlife.net/
    """
     
    try:
        import MySQLdb
    except ImportError:
        raise ImportError("[E]: MySQLdb module not found!")
     
    class CMySql(object):
        def __init__(self):
            self.Option = {"host" : "", "password" : "", "username" : "", "database" : ""}
     
        def setoptions(self, host, pwd, user, db):
            self.Option["host"] = host
            self.Option["password"] = pwd
            self.Option["username"] = user
            self.Option["database"] = db
     
        def start(self):
            try:
                self.db = MySQLdb.connect(
                            host = self.Option["host"],
                            user = self.Option["username"],
                            passwd = self.Option["password"],
                            db = self.Option["database"])
                self.create()
            except Exception, e:
                print e
                raise Exception("[E] Cannot connect to %s" % self.Option["host"])
     
        def create(self, sqlstate):
            """
            @todo: sqlstate可以自己改成其他参数,下同
            """
            self.cursor = self.db.cursor()
            self.cursor.execute(sqlstate) #创建
            self.db.commit()
            self.cursor.close()
     
        def insert(self, sqlstate):
            """
            @todo: 虽然函数名是insert,不过增删改都行
            """
            self.cursor = self.db.cursor()
            self.cursor.execute(sqlstate) #增、删、改
            self.db.commit()
            self.cursor.close()
     
        def query(self, sqlstate):
            self.cursor = self.db.cursor()
            self.cursor.execute(sqlstate) #查
            qres = self.cursor.fetchall()
            self.cursor.close()
            return qres
     
        def one_query(self, sqlstate):
            self.cursor = self.db.cursor()
            self.cursor.execute(sqlstate) #查
            qres = self.cursor.fetchall()[0]
            self.cursor.close()
            return qres
     
        def close(self):
            self.db.close()

    下载CMySql类

  • 相关阅读:
    运用《深入理解Java虚拟机》书中知识解决实际问题
    FPGA实现移动目标检测
    FPGA实现人脸检测
    FPGA实现图像的边缘检测:灰度形态学梯度
    FPGA实现图像的二值形态学滤波:边界提取
    VAST3.0规范
    Flash Socket通信的安全策略问题 843端口
    100个开源游戏
    游戏指标分析
    网络广告类型有哪些?
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/3392783.html
Copyright © 2011-2022 走看看