Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450351
  • 博文数量: 112
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1085
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-15 09:42
个人简介

上善若水,不浮不沉!

文章存档

2021年(2)

2020年(3)

2018年(2)

2017年(1)

2016年(8)

2015年(11)

2014年(57)

2013年(28)

我的朋友

分类: Python/Ruby

2014-05-07 09:46:53

Python+django+mysql框架

一、测试环境:centos,Python 2.6.5,django,setuptools-0.6c11,MySQL-python-1.2.2,mysql 5.1.44

二、环境配置过程:

1.Python 2.6

下载wget --no-check-certificate  

解压tar  -zxvf  Python-2.6.7.tgz 

cd  Python-2.6.7

./configure

make

make install

替换原有python:

cd  /usr/bin

rm   -rf  python

ln  -s /usr/local/bin/python2.6   ./python

Python   -V 显示python2.6.7 即成功

2.django 1.2.5 及以上

 下载wget  

tar -zxf  Django-1.3.tar.gz

cd  Django-1.2

Sudo  python setup.py install

验证:进入python shell ,import django 无错则安装成功
3、安装mysql数据库

4、MySQLdb 连接数据库(python连接mysql)
首先需要安装mysql-5.1.14、zlib、zlib-devl、python和python-devl。
yum install zlib zlib-devl
安装使用包,如果已有可以不用安装
wget 
获得连接连接mysql的包
wget 

下载


可以选择高版本1.2.3就不会遇到错误1和错误2
wget 

具体操作命令:
# tar zxvf setuptools-0.6c11.tar.gz
# cd setuptools-0.6c11
# python setup.py build
# python setup.py install

# tar zxvf MySQL-python-1.2.2.tar.gz
# cd MySQL-python-1.2.2
# python setup.py build
# python setup.py install
注:如果碰到mysql_config not found的问题,有两种方法解决:
1)ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
将mysql_confi从你的安装目录链接到/usr/local/bin目录下,这样就可以在任意目录下访问了(也可以放到/usr/bin)
2) 编辑源码文件夹的site.cfg文件,去掉#mysql_config = /usr/local/bin/mysql_config前的注释#,修改后面的路径为你的mysql_config真正的目录就可以了。(如果不知道 mysql_config在哪里,运行命令:whereis mysql_config)

测试脚本
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os,sys
import  MySQLdb
try:
   db = MySQLdb.connect(host = 'localhost', user='root' passwd = 'xxxxx', db = 'mysql')
except MySQLdb.ERROR,e:
   print "Error %d:%s"%(e.args[0],e.args[1])
   exit(1)
cursor = db.cursor()
cursor.execute( 'select * from user')
result_set=cursor.fetchall()
print result_set
cursor.close()
db.close()
如果能查到结果,恭喜正确了。

错误1.
>>> import  MySQLdb
Traceback (most recent call last):
  File "", line 1, in 
  File "build/bdist.linux-i686/egg/MySQLdb/__init__.py", line 19, in 
  File "build/bdist.linux-i686/egg/_mysql.py", line 7, in 
  File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

解决方法一:
首先查找模块
# find / -name libmysqlclient_r.so.16
/usr/local/src/mysql-5.1.44-linux-i686-glibc23/lib/libmysqlclient_r.so.16
/usr/local/mysql/lib/libmysqlclient_r.so.16
将模块路径加入动态链接库设置为共享
 vim /etc/ld.so.conf
 加入:libmysqlclient_r.so.16所在目录
 ldconfig -v
解决方法二:
将mysql/lib下所有关于libmysqlclient的so文件软链接到/usr/lib下。
>>>ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib
重新加载配置:
>>>ldconfig


错误2.
>>> import  MySQLdb
/usr/local/lib/python2.6/site-packages/MySQL_python-1.2.2-py2.6-linux-i686.egg/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated

解决方法
进入./MySQL-python-1.2.2/MySQLdb目录中
1) 在文件 "__init__" 中将:
 from sets import ImmutableSet
 class DBAPISet(ImmutableSet):
 替换为
 class DBAPISet(frozenset)
3) 在文件 "converters.py", 把 "Set" 改为 "set"
 将return set([ i for i in s.split(',') if i ])中"Set" 改为 "set"
 将set: Set2Str,中"Set" 改为 "set"
2) 在文件 "converters.py"中移除:
 from sets import BaseSet, Set
修改完毕后在做编译和安装。

错误3.
_mysql.c:36:23: 错误:my_config.h:没有那个文件或目录

解决方法
设置include 头文件路径即可,如下
export C_INCLUDE_PATH=/usr/local/mysql/include/

错误4.
>>> cur.execute('select * from user')
Segmentation fault

解决方法
将语句写为“select user,host from user”可以正常查出。
在64位的服务器上安装发现此问题。不知道为什么会有段错误。是否所有64位服务
器均有此问题,我没有测试

 

    

阅读(1770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~