使用Python程序对MySQL进行操作

MySQL在Windows上的安装

安装mysql

  • 以管理员身份运行cmd DOS命令行,进行安装
#进入你的解压目录,我的在D盘的mysql目录下
D:\>cd \mysql\mysql-5.7.20-winx64\mysql-5.7.20-winx64\bin
D:\mysql\mysql-5.7.20-winx64\mysql-5.7.20-winx64\bin>mysqld -install 
D:\mysql\mysql-5.7.20-winx64\mysql-5.7.20-winx64\bin>mysqld --initialize-insecure --user=MySQL
D:\mysql\mysql-5.7.20-winx64\mysql-5.7.20-winx64\bin>net start mysql

添加环境变量

这个很简单:右键我的电脑–>属性–>系统高级设置–>环境变量–>系统环境变量–>Path–>编辑–>新建–将你解压的mysql的bin目录写入就完成了

mysql的基本操作(和linux都一样,这里就不多说了)

用dos命令行登录之后和linux都一样,建库和建表等等

  • 简单的增删改查
C:\Users\asus>mysql -uroot -p
#注意:第一次安装完成之后没有密码直接回车
mysql> create database day05;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| day05              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use day05;
Database changed
mysql> show tables
    -> ;
Empty set (0.00 sec)

mysql> create table UserInfo(id int,name varchar(10));
Query OK, 0 rows affected (0.28 sec)

mysql> show tables;
+-----------------+
| Tables_in_day05 |
+-----------------+
| userinfo        |
+-----------------+
1 row in set (0.00 sec)

mysql> insert into UserInfo(id,name) values(1,'feitian');
Query OK, 1 row affected (0.30 sec)

mysql> select  * from  UserInfo;
+------+---------+
| id   | name    |
+------+---------+
|    1 | feitian |
+------+---------+
1 row in set (0.00 sec)
mysql> update  UserInfo set name = 'aixuexi' where name = 'feitian';
Query OK, 1 row affected (0.56 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> delete  from UserInfo where name = 'aixuexi';
Query OK, 1 row affected (0.07 sec)
#修改密码,他会提示你在命令行显示密码不安全,使用交互式修改密码,而且不能使用mysql -uroot -p‘密码’登录
mysql> mysqladmin -uroot -p123456 password 123 

在eclipse中导入MySQLdb模块

  • 下载网址:http://www.codegood.com/downloads
    根据你的Python版本下载对应的MySQL-python模块,直接安装即可
  • 查看你的Python的版本
    点击 Windows–>Preferences进入如下页面:
    这里写图片描述

到相应的目录下,点击运行python.exe,就可以看到你的版本

这里写图片描述

  • 导入MySQLdb模块
    点击Libraries – >New Folder –> MySQL-server安装目录下的site-packages下的MySQLd
    注意:最后要重启eclipse

使用Python进行数据库的基础操作

使用Python程序查看mysql中表的数据

我数据库中的day05库中admin表中的数据
这里写图片描述

#!/usr/bin/env python
#coding:utf-8
import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='fenghui',db='day05')
cur = conn.cursor()
#cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) #这句以字典的方式获取表的信息
#上面两句是创建链接
reCount = cur.execute('select * from admin')    #返回你操作影响的条数
data = cur.fetchall()                           #将你select * from admin所想得到的数据拿出来
#上面两句对数据库进行操作
cur.close()
conn.close()
#上面两句关闭连接
print reCount
print data
#输出结果:
3
((1L, 'lal'), (2L, 's'), (3L, 'dfgdf'))

使用Python增加数据库中的数据

import MySQLdb
from _ast import Param
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='fenghui',db='day05')
cur = conn.cursor()

sql = 'insert into admin(name) values(%s)'
params = ('feitian')
reCount = cur.execute(sql,params)
data = cur.fetchall()
conn.commit()
cur.close()
conn.close()
print reCount
#输出结果:
1

这里写图片描述

删除数据库中的数据结构

import MySQLdb
from _ast import Param
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='fenghui',db='day05')
cur = conn.cursor()
sql = 'delete from admin where id = %s'
params = (3,)
#这里以元组的方式传入,大家都懂,必须要加','号
reCount = cur.execute(sql,params)
data = cur.fetchall()
conn.commit() 
cur.close()
conn.close()
print reCount
#输出结果:
1

这里写图片描述

修改这里就不说了,也就是修改一下sql语句

sql = 'update  admin set name = %s where id = %s'
params = ('lala',2)

使用python程序大批量获取字典类型的数据

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='fenghui',db='day05')
cur = conn.cursor()

li = [
    (100,'feitain1'),
    (200,'feitian2'),
    ]
reCount = cur.executemany('insert into  admin(id,name) values(%s,%s)',li)
conn.commit() 
cur.close()
conn.close()
print reCount
#输出结果:
2

数据库的提交和回滚(事务操作)

  • 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

SQL语句的分类

从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类。

  • DDL(Data Definition Language)
    数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ;
    CREATE—创建表
    ALTER—修改表
    DROP—删除表
  • DML(Data Manipulation Language)
    数据操纵语言,SQL中处理数据等操作统称为数据操纵语言 ;
    INSERT—数据的插入
    DELETE—数据的删除
    UPDATE—数据的修改
    SELECT—数据的查询
  • DCL(Data Control Language)
    数据控制语言,用来授予或回收访问数据库的某种特权,并控制 数据库操纵事务发生的时间及效果,对数据库实行监视等;
    GRANT— 授权。
    ROLLBACK—回滚。
    COMMIT— 提交。

提交的几种类型

  • 显式提交
    用 COMMIT 命令直接完成的提交为显式提交。
  • 隐式提交
    用 SQL 命令间接完成的提交为隐式提交。这些命令是: ALTER , AUDIT , COMMENT , CONNECT , CREATE , DISCONNECT , DROP , EXIT , GRANT , NOAUDIT , QUIT , REVOKE , RENAME 。
  • 自动提交
    若把 AUTOCOMMIT 设置为 ON ,则在插入、修改、删除语句执行后,
    系统将自动进行提交,这就是自动提交。其格式为: SQL>SET AUTOCOMMIT ON ;

数据库的回滚和提交

COMMIT / ROLLBACK这两个命令用的时候要小心。 COMMIT / ROLLBACK 都是用在执行 DML语句(INSERT / DELETE / UPDATE / SELECT )之后的。DML 语句,执行完之后,处理的数据,都会放在回滚段中(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK后,放在回滚段中的数据就会被删除。

(SELECT 语句执行后,数据都存在共享池。提供给其他人查询相同的数据时,直接在共享池中提取,不用再去数据库中提取,提高了数据查询的速度。)

所有的 DML 语句都是要显式提交的,也就是说要在执行完DML语句之后, 执行 COMMIT 。而其他的诸如 DDL 语句的,都是隐式提交的。也就是说,在运行那些非 DML 语句后,数据库已经进行了隐式提交,例如 CREATE TABLE,在运行脚本后,表已经建好了,并不在需要你再进行显式提交。在提交事务(commit)之前可以用rollbacl回滚事务

fetchone()和scroll()

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='fenghui',db='day05')
cur = conn.cursor()
#cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
#上面两句是创建链接
reCount = cur.execute('select * from admin')
data = cur.fetchone()
print data
cur.scroll(0,mode='absolute')
data = cur.fetchone()
print data
cur.scroll(-1,mode='relative')
data = cur.fetchone()
print data
#我们可以看到每次执行一次fetchone()它打印一个,每使用一次打印一个。

#cur.scroll(-1,mode='relative')
#cur.scroll(0,mode='absolute')
#根据mode的复制我们可以知道,一个是绝对(应该是开头),一个是相对(根据我现在的指针,让其移动)
cur.close()
conn.close()

获取mysql的自增ID

  • cur.lastrowid
    这里就不在说了,在两张表有关联的时候,需要用到lastrowid()这个,但是,他只是获取最后一个,如果是大量插入,就要重新设计程序来完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值