安装python MySQL环境

29 篇文章 1 订阅
6 篇文章 0 订阅

安装 python-mysql环境

yum下安装的版本为1.2.3可能会造成版本不匹配,手动下载安装包MySQL-python-1.2.5,

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


在解压文件夹下运行 python setup.py build

可能会提示缺少setuptools, 首先安装pypa-setuptools


继续安装可能提示

EnvironmentError: mysql_config not found
解决办法
(1)ubuntu下
执行sudo apt-get install libmysqld-dev
(2)centos下
执行 sudo yum install python-devel
若出现:my_config.h:没有那个文件或目录,就执行:sudo yum install mysql-devel
注意:yum也是python写的,默认是调用/usr/bin/python的,这是系统本身自带的python,自己安装的一般在/usr/local/bin/python,所以最好别把系统自带的python给卸载掉了,自己下载的python没有yum模块。


继续编译,如果提示缺少其他工具如gcc,就继续补充

编译完成后,python setup.py install  安装成功


设置用户访问数据库权限

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

 

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。


python MySQLdb的操作

1.import MySQLdb;

2.与mysql数据库建立连接:con=MySQLdb.connect(user='root',db='mysql',passwd='dingjia',host='localhost')

3.当没有游标cursor对象时候,连接对象可以使用query()方法,执行sql查询

 con.query('create database test')

4.使用游标对象和execute()方法来执行sql

cur=con.cursor()  返回游标对象

cur.execute('create table users(login varchar(8),uid INT)')

cur.execute('insert into users values('hzhida',1000)')

cur.execute('select *from users')

for data in cur.fetchall(): 输出查询结果得到的数据

  print '%s\t%s' % data

cur.close()  关闭游标

con.commit()  提交事务

con.close()     关闭连接

python cookbook 的例子:

复制代码
#-*-coding:utf-8-*-
import MySQLdb,cPickle

#连接到数据库,并获得图标
connection = MySQLdb.connect(user = 'root',db='zm',passwd = '36039975',host='localhost')
cursor = connection.cursor()

#创建一个新表以用于试验
cursor.execute('create table test(name TEXT, ablob BLOB)')

try:
    #准备一些BLOB用于测试
    names = 'aramis', 'athos','porthos'
    data = { }
    for name in names:
        datum = list(name)
        datum.sort()
        data[name] = cPickle.dumps(datum,2)
    #execute insert
    sql = "insert into test values(%s, %s)"
    for name in names:
        cursor.execute(sql,(name,MySQLdb.escape_string(data[name])))
    #check in the database
    sql = "select name, ablob from test order by name"
    cursor.execute(sql)
    for name , blob in cursor.fetchall():
        print name, cPickle.loads(blob), cPickle.loads(data[name])

finally:
    #finish,delete table and close connection
    cursor.execute("drop table test")
    cursor.close()
    connection.close()
输出:

aramis ['a', 'a', 'i', 'm', 'r', 's'] ['a', 'a', 'i', 'm', 'r', 's']
athos ['a', 'h', 'o', 's', 't'] ['a', 'h', 'o', 's', 't']
porthos ['h', 'o', 'o', 'p', 'r', 's', 't'] ['h', 'o', 'o', 'p', 'r', 's', 't']

复制代码

数据库查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall():接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
# encoding: utf-8
#!/usr/bin/python

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
       WHERE INCOME > '%d'" % (1000)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 获取所有记录列表
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
      # 打印结果
      print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
             (fname, lname, age, sex, income )
except:
   print "Error: unable to fecth data"

# 关闭数据库连接
db.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值