python及mysql安装_python-mysql的安装和基本操作

1、  安装

Windows安装

登录https://pypi.python.org/pypi/MySQL-python/1.2.5找到.exe结尾的包,下载安装就好了,然后在cmd中执行:

python及mysql安装_python-mysql的安装和基本操作_第1张图片

Linux

下载源码包进行安装:上节链接中的zip包,

yum install –y python-devel

yum install –y mysql-devel

yum install –y gcc

unzip MySQL-python-1.2.5.zip

cd MySQL-python-1.2.5

python setup.py build

python setup.py install

python

在linux服务器上安装mysql-server,我安装的是mysql5.6

yum install -y mysql-community-server-5.6.34-2.el7.x86_64

centos7版本以前:service mysqld restart

centos7版本以后:systemctl restart mysql.service

mysql进行授权:

mysql

create database python;

grant all privileges on *.* 'xiang'@'%' identified by '123456';

flush privileges;

Mysql命令进入mysql数据库,create用来创建库名python,grant 进行授权,授权xiang用户对所有的服务器,所有的库,所有的表都有权限,密码123456。

2、  数据库连接

MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象:

create database python;

conn=MySQLdb.connect(host="192.168.10.10",user="null",passwd="123456",db="python",charset="utf8")

常用的参数包括:

host:数据库主机名.默认是用本地主机

user:数据库登陆名.默认是当前用户

passwd:数据库登陆的秘密.默认为空

db:要使用的数据库名.没有默认值

port:MySQL服务使用的TCP端口.默认是3306,数字类型

charset:数据库编码

def connect_mysql():

db_config = {

'host': '192.168.48.128',

'port': 3306,

'user': 'xiang',

'passwd': '123456',

'db': 'python',

'charset': 'utf8'

}

cnx = MySQLdb.connect(**db_config)

return cnx

3、  Mysql事务

MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务

事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性:一组事务,要么成功;要么撤回。

2、稳定性 : 有非法数据(外键约束之类),事务撤回。

3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

4、  游标操作

游标(cursor)

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果

用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由python进一步处理,一组主变量一次只能存放一条记录

仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求

常用方法:

cursor():创建游标对象

close():关闭此游标对象

fetchone():得到结果集的下一行

fetchmany([size = cursor.arraysize]):得到结果集的下几行

fetchall():得到结果集中剩下的所有行

excute(sql[, args]):执行一个数据库查询或命令

executemany (sql, args):执行多个数据库查询或命令

例子:

import MySQLdb

def connect_mysql():

db_config = {

'host': '192.168.48.128',

'port': 3306,

'user': 'xiang',

'passwd': '123456',

'db': 'python',

'charset': 'utf8'

}

cnx = MySQLdb.connect(**db_config)

return cnx

if __name__ == '__main__':

cnx = connect_mysql()

cus = cnx.cursor()

sql  = '''select * from employees;'''

try:

cus.execute(sql)

result1 = cus.fetchone()

print('result1:')

print(result1)

result2 = cus.fetchmany(1)

print('result2:')

print(result2)

result3 = cus.fetchall()

print('result3:')

print(result3)        cus.close()

cnx.commit()

except Exception as e:

cnx.rollback()

print('error')

raise e

finally:

cnx.close()

结果:

result1:

(1001L, u'lingjiang', u'M', datetime.date(2015, 4, 1))

result2:

((1002L, u'xiang', u'M', datetime.date(2015, 4, 1)),)

result3:

((1003L, u'shang', u'M', datetime.date(2015, 4, 1)),)

解释:

1,  先通过MySQLdb.connect(**db_config)建立mysql连接对象

2,  在通过 = cnx.cursor()创建游标

3,  fetchone():在最终搜索的数据中去一条数据

4,  fetchmany(1)在接下来的数据中在去1行的数据,这个数字可以自定义,定义多少就是在结果集中取多少条数据。

5,  fetchall()是在所有的结果中搞出来所有的数据。

对于excute()和excutemany()的方法,我们会在以一节详细分析他们的区别。

你可能感兴趣的:(python及mysql安装)