python with mysql

Linux下python玩转MySQLdb

一:起因

(1)Linux下安装Python的第三方模块 ---- MySQLdb,自己走了很多弯路,在此做一下总结,希望对于像我一样的初学者有所帮助

(2)Python中MySQL数据库连接的例子,请见Linux公社 或者 我的个人github源代码

(3)MySQL-python 1.2.5的下载地址,同样也是pipe python的资源网站

二:MySQLdb在Linux环境中的安装

(1)Linux 下的安装mysql数据库,除了下载安装包进行安装外,一般的linux 仓库中都会有mysql ,安装命令:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Ubuntu\zyp  
  2. >>sudo apt-get install mysql-server   
  3. >>Sudo apt-get install  mysql-client  

>>mysql -u root -p 即可检验mysql服务和客户端是否安装和开启

(2)MySQL-python驱动模块安装

下载地址:https://pypi.python.org/pypi/MySQL-python/

下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:

>>python setup.py install  ----- 报错误 

(3-1)Python安装模块出错(ImportError: No module named setuptools)解决方法

安装请看 http://blog.csdn.NET/ab198604/article/details/8681851 或者 更加科学的方法

(3-2)提示报错信息:mysql_config not found

这个是因为缺少libmysqld_dev, libmysqlclient_dev 两个开发包引起的

下载缺少的开发包,运行两个命令:(如果未找到包,请详细查看更改163源

 sudo apt-get insatll libmysqld-dev
 sudo apt-get install libmysqlclient-dev

(4)修改源代码目录下的setup_posix.py文件,将mysql_config.path 修改为mysql_config.path="/usr/bin/mysql_config"

再次在源代码目录中运行python setup.py build

系统再次提示报错信息: error: command 'gcc' failed with exit status 1

需安装两个资源文件 : 

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo apt-get install build-essential  
  2.  sudo apt-get install python-dev  
(5)再次会到源文件目录执行

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. sudo python setup.py build  
  2. sudo python setup.py install  

至此,mysql的模块安装完成!

(6)检查MySQLdb 模块是否可以正常导入

>>> import MySQLdb

(7)示例

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import MySQLdb  
  2. # establish connection with mysql  
  3. conn = MySQLdb.connect(host='localhost',user='root',passwd='root')  
  4. # get the cursor of operator  
  5. cur = conn.cursor()  
  6. # execute sql and create database name/ drop database name  
  7. cur.execute("""create database if not exists python""")  
  8. # select database use database  
  9. conn.select_db('python')  
  10. # execute and create table  
  11. cur.execute("""create table test(id int,ifo varchar(100))""")  
  12.   
  13. value = [1,"inserted?"]  
  14. # insert one record  
  15. cur.execute("insert into test values(%s,%s)",value)  
  16.   
  17. values=[]  
  18. for i in range(20):  
  19.     values.append((i,'Hello mysqldb,I am record' + str(i)))  
  20. # insert multi records  
  21. cur.executemany("""insert into test values(%s,%s)""",values)  
  22. # close cursor  
  23. cur.close()  
  24.   
  25. print "create successfully!"  

示例解释:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. conn = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'root',db = 'python')  
  2. # connect() 方法用于创建数据库的连接,可指定参数:用户名,密码,主机等,这只是连接到了数据库,操作数据库需要创建游标。  
  3. cur = conn.cursor()  
  4. # 通过获取到的数据库连接conn下的cursor()方法来创建游标。  
  5. cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")  
  6. # 通过游标cur 操作execute()方法,我们可以写入纯sql语句。  
  7. cur.close()  
  8. # cur.close() 关闭游标  
  9. conn.commit()  
  10. # conn.commit()方法用于提交事物,在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入。  
  11. conn.close()  
  12. # Conn.close()关闭数据库连接  

三:linux操作数据库命令

(1)创建数据库

命令:create database <数据库名>

(2)创建数据库并分配用户

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 
数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';

(3)基本操作小结

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. # common command --- the same to cmd consel ---- mysql -u root -p --  
  2. # mysql -- show databases; -- create database name -- use dbname --  
  3. # drop database name -- create table name (id int, name varchar(100)) --  
  4. # select * from tbname (where) / delete from tbname where -- desc tbname  
  5. # insert into tbname values(1,'zyp') / update tbname set id=99 where id=9  

(4)linux操作系统上面开发程序, 只有了gcc 是不行的,还需要一个   build-essential软件包

作用是提供编译程序必须软件包的列表信息,也就是说 编译程序有了这个软件包,它才知道 头文件在哪 才知道库函数在哪,还会下载依赖的软件包   最后才组成一个开发环境

软件包: build-essential 安装方法:sudo apt-get install build-essential
 (5)linux发行版通常会把类库的头文件和相关的pkg-config分拆成一个单独的xxx-dev(el)包。以python为例, 以下情况你是需要python-dev的

当需要自己安装一个源外的python类库, 而这个类库内含需要编译的调用python api的c/c++文件,这时需要写的一个程序编译需要链接libpythonXX.(a|so);其他正常使用python或者通过安装源内的python类库的不需要python-dev。

libmysqlclient-dev 是MySQL database development files;ubuntu 上 mysql-devel 库的名字叫 libmysqld-dev,安装方法:sudo apt-get install libmysqld-dev

(6)Linux查看mysql 安装路径

1)查看文件安装路径

由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址)。

这里以mysql为例。比如说我安装了mysql,但是不知道文件都安装在哪些地方、放在哪些文件夹里,可以用下面的命令查看所有的文件路径 

在终端输入:whereis mysql,回车,如果你安装好了mysql,就会显示文件安装的地址

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [root@localhost ~]# whereis mysql   
  2. mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz  

2)查询运行文件所在路径(文件夹地址)

如果你只要查询文件的运行文件所在地址,直接用下面的命令就可以了(还是以mysql为例):

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. which mysql  终端显示:  
  2. [root@localhost ~]# which mysql   
  3. /usr/bin/mysql  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值