win10(64bit)上安装MySQL-python

     写本文以前,我已经在电脑中安装了MySQL5.7以及Python2.7,这是基本保证。
       
     看本文之前也可以看这篇文章,流程一样更简练些,我是写完自己的总结以后才发现的,内容很像但属于巧合。也许因为同一个问题基本上就是同种解决方式,大家可能都是不断搜索尝试他人的方法后总结的吧。

http://blog.csdn.net/qq_26808915/article/details/50256717


正文:

       用Python开发数据库方面的程序自然需要适用于Python语言的api(或者说是module/模块),目前Python自身并不包括与具体类型数据库(比如本文说的MySQL)进行交互(比如建立连接,增删改查)的关键api,只有一些统一接口(?)。或许将来python会内嵌了各种数据库操作api也说不定。Python数据库接口支持很多种数据库,本文只说MySQL。

我使用的win10系统,在说下面步骤之前,我已经在电脑上安装了MySQL-5.7的服务端以及Python2.7,均是64bit的版本。

在Python中使用MySQL需要安装MySQLdb,然后使用时import这个模块就行了。按照网上的教程,我在连接网页下载了MySQL-python-1.2.5.win32-py2.7.exe,然后安装。安装过程中弹出错误页面(忘了截图),大概的意思是Python不在注册表中:python version 2.7 required,which was not found in the registry。出现这个问题的话,在任意目录下创建一个.py的Python脚本(比如register.py),里面的内容是:

  

import sys 

  

from _winreg import * 

  

# tweak as necessary  

version = sys.version[:3] 

installpath = sys.prefix 

  

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version) 

installkey = "InstallPath" 

pythonkey = "PythonPath" 

pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % ( 

    installpath, installpath, installpath 


  

def RegisterPy(): 

    try: 

        reg = OpenKey(HKEY_CURRENT_USER, regpath) 

    except EnvironmentError as e: 

        try: 

            reg = CreateKey(HKEY_CURRENT_USER, regpath) 

            SetValue(reg, installkey, REG_SZ, installpath) 

            SetValue(reg, pythonkey, REG_SZ, pythonpath) 

            CloseKey(reg) 

        except: 

            print "*** Unable to register!" 

            return 

        print "--- Python", version, "is now registered!" 

        return 

    if (QueryValue(reg, installkey) == installpath and 

        QueryValue(reg, pythonkey) == pythonpath): 

        CloseKey(reg) 

        print "=== Python", version, "is already registered!" 

        return 

    CloseKey(reg) 

    print "*** Unable to register!" 

    print "*** You probably have another Python installation!" 

  

if __name__ == "__main__": 

    RegisterPy() 




        然后在该文件目录下,打开cmd执行python <脚本名> 运行这个脚本就行了(前提是配置了Python环境变量,和java等一样的配置方式)。显示注册成功以后再运行之前的.exe,结果成功了。于是赶紧import MySQLdb试试,没想到又报错:


Traceback (most recent call last):

  File "", line 1, in

    import cx_Oracle

ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。


也就是大概是说Python是64位的,你这个MySQLdb程序却是32位的,所以不行。

于是各种找64位的MySQLdb-python,结果发现资源不多(可能是我不会找),Python官网以及MySQL上都没有,有些地方下载需要积分,由于囊中羞涩,所以暂时没有选择需要积分的,接着找。找到一个这样的网站:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python,各种Python的扩展包,然后发现没有想要的exe的文件,都是.whl的文件,搜索后发现安装这种文件需要用Python自带脚本pip.exe(在Python安装目录的scripts目录下),于是下载了一个MySQL_python-1.2.5-cp27-none-win_amd64.whl用pip install命令安装,可惜安装后还是不行,显示当前已经满足条件,mysql已经在site-packets目录下。猜想是32位的包造成的,于是删除所有有关的包,用pip install MySQL-python命令打算直接安装MySQL-python.令人头疼的是又出现新的error: Microsoft Visual C++ 9.0 is required...好吧,又到网上下载vc++for python进行安装,结束以后再试...还是报错:

Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2

接着搜索一番,发现又回到原点:解决这个问题需要安装64位的MySQLdb,但是可惜的是多个文章中提到的http://www.codegood.com/archives/这个网站已经不能用了。没办法,搜索MySQL-python-1.2.3.win-amd64-py2.7.exe的百度网盘资源,结果终于找到(http://www.panduoduo.net/r/15776780)。下载完以后安装,没有遇到之前的任一个问题,一切顺利。在命令行中Python环境下执行import MySQLdb命令,没有出现任何信息,用dir(MySQLdb)命令查看,发现已经正常导入了。。。

饶了个大弯,总结起来就两点有用:

①win10下,如果Python是64位的话,MySQL-python就直接找64位的资源,否则出现各种意想不到的问题;

②出现"注册表中没有Python"的问题就执行上述脚本(还有其他方法,自查)。


 






 






    

你可能感兴趣的:(python,MySQLdb-python)