python学习—Day26—python的mysql操作
来源:互联网 发布:淘宝信用支付怎么开通 编辑:程序博客网 时间:2024/05/20 06:05
安装MySQL所需要的包:
如果有如下报错信息,
>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named MySQLdb
那是环境变量有问题,把安装刚才下载的.exe包的路径添加到环境变量中就可以了。如果是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
>>> import MySQLdb
/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg/_mysql.py:3:UserWarning: Module _mysql was already imported from/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg/_mysql.pyc,but /usr/local/src/MySQL-python-1.2.5 is being added to sys.path
如果出现类似的错误,原因是,install后MySQLdb模块已经被放到python的site-pachages目录中;但我在当前目录也存在相同的模块,所以可能会重复导入。只要切换到其他目录运行python就可以了。
在linux服务器上安装mysql-server,我安装的是mysql5.6
yum install -ymysql-community-server-5.6.34-2.el7.x86_64
centos7版本以前:service mysqldrestart
centos7版本以后:systemctlrestart mysql.service
mysql进行授权:
mysql
create database python;
grant all privileges on *.* 'xiang'@'%'identified by '123456';
flush privileges;
解释:
Mysql命令进入mysql数据库,create用来创建库名python,grant 进行授权,授权xiang用户对所有的服务器,所有的库,所有的表都有权限,密码123456。
数据库连接:
import MySQLdbconn=MySQLdb.connect(host="192.168.2.100",user="xiao",passwd="123456",db="python",charset="utf8",post=3306)上面是一般写法,但是对于一个有节操的程序员,我们最好要用模块或函数实现:
def connect_mysql(): db_config = { 'host' : '192.168.2.100', 'port' : 3306, 'user' : 'xiao', 'passwd' : '123456', 'db' : 'python', 'charset' : 'utf-8' } try: cnx = MySQLdb.connect(**db_config) except Exception as e: raise e return cnxconnect_mysql()这里的实现方法是通过配置一个函数实现mysql数据库的连接。可以看出,连接函数配置好后,可以在任意地方调用,节省了代码的重复,并且但连接需要修改时,是需要在函数中修改一个地方在其他地方自动生效,而不需要重复工作。这里就体现了一个合格程序员对功能实现的好思想。
mysql事务:
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。
在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。
事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
1、事务的原子性:一组事务,要么成功;要么撤回。
2、稳定性 : 有非法数据(外键约束之类),事务撤回。
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
而mysql在默认的情况下,他是把每个select,insert,update,delete等做为一个事务的,登录mysql服务器,进入mysql,执行以下命令:
mysql> show variables like 'auto%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
+--------------------------+-------+
4 rows in set (0.00 sec)
如上所示:有一个参数autocommit就是自动提交的意思,每执行一个msyql的select,insert,update等操作,就会进行自动提交。
如果把改选项关闭,我们就可以每次执行完一次代码就需要进行手动提交,connect对象给我们提供了两种办法来操作提交数据。
a) mysql事务的方法
commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚,白操作了
rollback():取消当前事务数据库操作:
通过python代码增加一条数据到数据库中,代码如下:
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 = ''' create table test(idint not null);insert into test(id) values (100);'''
try:
cus.execute(sql)\\执行sql语句
cus.close() \\关闭连接
cnx.commit()\\commit提交操作
except Exception as e:
#cnx.rollback()\\还可以进行回滚操作
raise e
finally:
cnx.close()
- python学习—Day26—python的mysql操作
- 【python学习.Mysql的基本操作使用】
- JAVA学习笔记Day26——OKHTTP
- Python的MySQL操作
- python 的MySQL操作
- Python 的 mysql 操作
- python的 mysql 操作
- MySQL数据库操作学习(Python)
- python 学习笔记-操作mysql
- [python]Python操作MySQL
- mysql模块学习:python操作MySQL数据库
- Python的学习笔记(四)(MySQL数据库的操作)
- Python基础知识——对mysql数据库的操作
- python对MySQL的操作
- python对mysql的操作
- python mysql数据库的操作
- python对mysql的操作
- python对mysql的操作
- apache服务
- MySQL增量备份及恢复
- 谷歌插件-无法点到百度搜索按钮
- Persistence,EntityManagerFactory和EntityManager
- HTTP协议详解
- python学习—Day26—python的mysql操作
- VS2015+QT笔记1
- java实现记事本之Java记事本源码及实现
- python编程(一种自定义定时器的写法)
- Spring整合mybatis
- 企服三会 | 企服三会首发,洞见2018中国移动办公发展趋势
- 除了听大咖讲干货,我们的会议里还有这些东西!
- MySQL线上备份与恢复方案
- Shell编程基础