Windows下Python添加MySQLdb扩展模块

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

【转载者说明:】【我这里用的版本是python2.6  MySQL5.5】

安装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:\Code\Python\mysql>setup.py install
Traceback (most recent call last):
  File "E:\Code\Python\mysql\setup.py", line 15, in <module>
    metadata, options = get_config()
  File "E:\Code\Python\mysql\setup_windows.py", line 7, in get_config
    serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
WindowsError: [Error 2]

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

 #serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
    #mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location')
    mysql_root = "C:\Program Files\MySQL\MySQL 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的目录:

【转载者说明:】【我是直接将Mysql-connnector-c安装到mysql的目录下合并了。合并后要运行MySQLInstanceConfig.exe重新配置一遍。mysql_root的目录不用改,还是MySQL的根目录】

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

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

【转载者说明:】【我在这里build又遇到一个问题:】

build\temp.win32-2.6\Release\_mysql.pyd.manifest : general error c1010070: Failed to load and parse the manifest. The system cannot find  the file specified.
error: command ‘mt.exe’ failed with exit status 31

这个应该是C++

关于重装MySQL

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

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

CMySql类

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

import MySQLdb

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

#!/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类

原创文章,转载请注明:
本文出自程序人生 >> Windows下Python添加MySQLdb扩展模块
作者:代码疯子

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值