MySQL在Windows上的安装
- 在官网下载msyql
网址:https://dev.mysql.com/downloads/mysql/
安装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()这个,但是,他只是获取最后一个,如果是大量插入,就要重新设计程序来完成。