下面是一次用django连接mysql的经历,记录下来也许以后会有帮助。
首先是用django的./manage.py syncdb 去连接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
|
- bash - 3.2 $ . / manage.py syncdb
Traceback (most recent call last): File
"./manage.py" , line 10 , in
<module>
execute_from_command_line(sys.argv)
File
"/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py" , line 399 , in
execute_from_command_line
utility.execute()
File
"/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py" , line 392 , in
execute
self .fetch_command(subcommand).run_from_argv( self .argv)
File
"/usr/local/lib/python2.7/site-packages/django/core/management/base.py" , line 242 , in
run_from_argv
self .execute( * args, * * options.__dict__)
File
"/usr/local/lib/python2.7/site-packages/django/core/management/base.py" , line 280 , in
execute
translation.activate( ‘en-us‘ )
File
"/usr/local/lib/python2.7/site-packages/django/utils/translation/__init__.py" , line 130 , in
activate
return
_trans.activate(language)
File
"/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py" , line 188 , in
activate
_active.value =
translation(language)
File
"/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py" , line 177 , in
translation
default_translation =
_fetch(settings.LANGUAGE_CODE)
File
"/usr/local/lib/python2.7/site-packages/django/utils/translation/trans_real.py" , line 159 , in
_fetch
app =
import_module(appname)
File
"/usr/local/lib/python2.7/site-packages/django/utils/importlib.py" , line 40 , in
import_module
__import__ (name)
File
"/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py" , line 6 , in
<module>
from
django.contrib.admin.sites import
AdminSite, site
File
"/usr/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" , line 4 , in
<module>
from
django.contrib.admin.forms import
AdminAuthenticationForm
File
"/usr/local/lib/python2.7/site-packages/django/contrib/admin/forms.py" , line 6 , in
<module>
from
django.contrib.auth.forms import
AuthenticationForm
File
"/usr/local/lib/python2.7/site-packages/django/contrib/auth/forms.py" , line 17 , in
<module>
from
django.contrib.auth.models import
User
File
"/usr/local/lib/python2.7/site-packages/django/contrib/auth/models.py" , line 48 , in
<module>
class
Permission(models.Model):
File
"/usr/local/lib/python2.7/site-packages/django/db/models/base.py" , line 96 , in
__new__
new_class.add_to_class( ‘_meta‘ , Options(meta, * * kwargs))
File
"/usr/local/lib/python2.7/site-packages/django/db/models/base.py" , line 264 , in
add_to_class
value.contribute_to_class( cls , name)
File
"/usr/local/lib/python2.7/site-packages/django/db/models/options.py" , line 124 , in
contribute_to_class
self .db_table =
truncate_name( self .db_table, connection.ops.max_name_length())
File
"/usr/local/lib/python2.7/site-packages/django/db/__init__.py" , line 34 , in
__getattr__
return
getattr (connections[DEFAULT_DB_ALIAS], item)
File
"/usr/local/lib/python2.7/site-packages/django/db/utils.py" , line 198 , in
__getitem__
backend =
load_backend(db[ ‘ENGINE‘ ])
File
"/usr/local/lib/python2.7/site-packages/django/db/utils.py" , line 113 , in
load_backend
return
import_module( ‘%s.base‘
% backend_name)
File
"/usr/local/lib/python2.7/site-packages/django/utils/importlib.py" , line 40 , in
import_module
__import__ (name)
File
"/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py" , line 17 , in
<module>
raise
ImproperlyConfigured( "Error loading MySQLdb module: %s"
%
e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb |
这里面最重要的就是最后一句 No module named MySQLdb. 这说明MySQL-python这个package没有安装成功。于是用pip2.7 install MySQL-python来安装,但是遇到如下错误。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@kramer site - packages] # pip2.7 install MySQL-python
Downloading / unpacking MySQL - python
Downloading MySQL - python - 1.2 . 5.zip
( 108kB ): 108kB
downloaded
Running setup.py (path: / tmp / pip_build_root / MySQL - python / setup.py) egg_info for
package MySQL - python
Installing collected packages: MySQL - python
Running setup.py install for
MySQL - python
building ‘_mysql‘
extension
gcc - pthread - fno - strict - aliasing - g - O2 - DNDEBUG - g - fwrapv - O3 - Wall - Wstrict - prototypes - fPIC - Dversion_info = ( 1 , 2 , 5 , ‘final‘ , 1 ) - D__version__ = 1.2 . 5
- I / usr / include / mysql - I / usr / local / include / python2. 7
- c _mysql.c - o build / temp.linux - x86_64 - 2.7 / _mysql.o - g - pipe - Wp, - D_FORTIFY_SOURCE = 2
- fexceptions - fstack - protector - - param = ssp - buffer - size = 4
- m64 - D_GNU_SOURCE - D_FILE_OFFSET_BITS = 64
- D_LARGEFILE_SOURCE - fno - strict - aliasing - fwrapv
_mysql.c: 44 : 23 : error: my_config.h: No such file
or directory
_mysql.c: 46 : 19 : error: mysql.h: No such file
or directory
_mysql.c: 47 : 26 : error: mysqld_error.h: No such file
or directory
_mysql.c: 48 : 20 : error: errmsg.h: No such file
or directory
|
这个错误很长所以只截取一小段来看。发现都是c/c++的头文件找不到,这一般是因为某个dev的包没有找到。在linux上你安装一个软件的时候这个软件通常有两部分,一个是dev包一个是应用包。如果你只要使用的话安装应用包就可以了,但是某些情况下需要dev包。 这里是mysql的一些头文件找不到所以我们应该安装mysql的dev包。 猜测名字应该是类似于mysql-devel
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
|
[root@kramer site - packages] # yum install mysql-devel
Loaded plugins: fastestmirror Loading mirror speeds from
cached hostfile
*
base: mirror.tocici.com
*
extras: mirror.tocici.com
*
updates: mirror.tocici.com
Setting up Install Process Resolving Dependencies - - > Running transaction check
- - - > Package mysql - devel.i386 0 : 5.0 . 95 - 5.el5_9
set to be updated
- - - > Package mysql - devel.x86_64 0 : 5.0 . 95 - 5.el5_9
set to be updated
- - > Finished Dependency Resolution
Dependencies Resolved = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Package Arch Version Repository Size
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Installing: mysql - devel i386 5.0 . 95 - 5.el5_9
base 2.4
M
mysql - devel x86_64 5.0 . 95 - 5.el5_9
base 2.5
M
Transaction Summary = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Install 2
Package(s)
Upgrade 0
Package(s)
Total download size: 4.9
M
Is this ok [y / N]: y
Downloading Packages: ( 1 / 2 ): mysql - devel - 5.0 . 95 - 5.el5_9 .i386.rpm | 2.4
MB 00 : 00
( 2 / 2 ): mysql - devel - 5.0 . 95 - 5.el5_9 .x86_64.rpm | 2.5
MB 00 : 00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Total 6.5
MB / s | 4.9
MB 00 : 00
Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : mysql - devel 1 / 2
Installing : mysql - devel 2 / 2
Installed: mysql - devel.i386 0 : 5.0 . 95 - 5.el5_9
mysql - devel.x86_64 0 : 5.0 . 95 - 5.el5_9
Complete! |
果然有这么一个包。安装之后就可以执行pip install。