zoukankan      html  css  js  c++  java
  • MAMP中Python安装MySQLdb

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。

    MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

    一、如何安装MySQLdb?

    为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    

    如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:

    Traceback (most recent call last):
      File "test.py", line 3, in <module>
        import MySQLdb
    ImportError: No module named MySQLdb
    

    安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-python ,(Linux平台可以访问:https://pypi.python.org/pypi/MySQL-python)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。

    如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令:

    $ gunzip MySQL-python-1.2.2.tar.gz
    $ tar -xvf MySQL-python-1.2.2.tar
    $ cd MySQL-python-1.2.2
    $ python setup.py build
    $ python setup.py install
    

    注意:请确保您有root权限来安装上述模块。

    运行错误信息:

    _mysql.c:44:10: fatal error: 'my_config.h' file not found
    

    原因是因为MySQL不是单独安装的,是安装的一个MAMP集成开发环境包,在MAMP中PHP和MySQL的头文件都是没有的,所以会报出这个错误。我们有两种解决方式,一种是重新编译MySQL,一种是单独安装mysq-connector-c,因为开发环境包已经自带了MySQL了,我们就不再编译安装了,单独安装就ok。

    执行以下语句:

    brew install mysql-connector-c
    

    二、数据库连接

    出现以下错误提示:

        sh: mysql_config: command not found  
        Traceback (most recent call last):  
          File "setup.py", line 17, in <module>  
            metadata, options = get_config()  
          File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 43, in get_config  
            libs = mysql_config("libs_r")  
          File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 25, in mysql_config  
            raise EnvironmentError("%s not found" % (mysql_config.path,))  
        EnvironmentError: mysql_config not found  
    

    修改setup_posix.py文件,代码如下

    mysql_config.path = "/Applications/MAMP/Library/bin/mysql_config"
    

    如果不知道其目录,可以使用一下命令查找

    sudo find / -name mysql_config
    

    完成该步骤之后可能仍然会出错:

        Traceback (most recent call last):  
          File "./hello.py", line 3, in <module>  
            import MySQLdb  
          File "build/bdist.macosx-10.10-intel/egg/MySQLdb/__init__.py", line 19, in <module>  
          File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 7, in <module>  
          File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 6, in __bootstrap__  
        ImportError: dlopen(/Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib  
          Referenced from: /Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so  
          Reason: image not found  
    

    此时,需要执行命令

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
    

    注意:该软连接的实际目录部分以自己机器上的目录为准

    另外:MAMP出现如下错误提示:

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    

    找不到socket文件,查找本机文件所在位置

    sudo find / -name mysql.sock
    

    将文件地址作为参数传递到数据库连接语句

    con=MySQLdb.connect(host='localhost',user='root',passwd='root',db='StudentDB',port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset='utf8')
    

    三、实例:

    以下实例链接Mysql的StudentDB数据库:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import MySQLdb 
    import sys
    import sys
    
    reload(sys)
    
    sys.setdefaultencoding('utf-8')
     
    con=MySQLdb.connect(host='localhost',user='root',passwd='root',db='StudentDB',port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset='utf8')
    
    #获取 mysql 的链接对象
    with con:
    	#获取执行查询的对象
    	cur = con.cursor()
    	#执行那个查询,这里用的是 select 语句
    	cur.execute("SELECT * FROM Student")
    	#使用 cur.rowcount 获取结果集的条数
    	numrows = int(cur.rowcount)
    #循环 numrows 次,每次取出一行数据
    for i in range(numrows):
    	#每次取出一行,放到 row 中,这是一个元组(id,name)
    	row = cur.fetchone()
    	#直接输出两个元素
    	print row[0], row[1]
    
  • 相关阅读:
    TSQL--NESTED LOOPS JOIN
    TSQL--SORT MERGE JOIN
    TSQL--HASH JOIN
    Backup--备份相关的信息查看及小技巧
    java后台json如何传递到jsp中解析
    大数据资源
    oracle sql生成日历表
    easyUI中onLoadSuccess方法获取多个对象
    征信用户数据分析
    JS优秀资源站点收集
  • 原文地址:https://www.cnblogs.com/sirius-swu/p/6833138.html
Copyright © 2011-2022 走看看