Mysql操作:

grant select,insert,update,delete on *.* to root@"%" Identified by "123456";  #授权远程访问

create database s12day9 charset utf8; #创建支持中文的数据库

创建表:

create table students
(
id int not null auto_increment primary key,
name char(32) not null,
sex char(20) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);

desc students; #显示表结构

mysql> desc students;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(32) | NO | | NULL | |
| sex | char(20) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| tel | char(13) | YES | | - | |
+-------+---------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

show create table  students;  #查看一个表创建时候的命令

mysql> show create table  students\G;
*************************** 1. row ***************************
Table: students
Create Table: CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(32) NOT NULL,
`sex` char(20) NOT NULL,
`age` tinyint(3) unsigned NOT NULL,
`tel` char(13) DEFAULT '-',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

insert into students(name,sex,age,tel) values('tom','man',28,'18600033313');

insert into students(name,sex,age,tel) values('jack','man',18,'18600033312'); #插入数据

mysql> insert into students(name,sex,age,tel) values('tom','man',20,'');
Query OK, 1 row affected (0.00 sec)

select * from students; #查询数据

+----+------+-----+-----+-------------+
| id | name | sex | age | tel |
+----+------+-----+-----+-------------+
| 1 | alex | man | 18 | 151515151 |
| 2 | jack | man | 18 | 18600033312 |
| 3 | tom | man | 28 | 18600033313 |
| 4 | tom | man | 20 | 18600033313 |
+----+------+-----+-----+-------------+
4 rows in set (0.00 sec)

select * from students where age > 18 and name = "tom"; #组合条件查询

mysql> select * from students where age > 18 and name = "tom";
+----+------+-----+-----+-------------+
| id | name | sex | age | tel |
+----+------+-----+-----+-------------+
| 3 | tom | man | 28 | 18600033313 |
| 4 | tom | man | 20 | 18600033313 |
+----+------+-----+-----+-------------+
2 rows in set (0.00 sec)

select * from students where age like "2%"; #模糊查询

mysql> select * from students where age like "2%";
+----+------+-----+-----+-------------+
| id | name | sex | age | tel |
+----+------+-----+-----+-------------+
| 3 | tom | man | 28 | 18600033313 |
| 4 | tom | man | 20 | 18600033313 |
+----+------+-----+-----+-------------+
2 rows in set (0.00 sec)

update students set name = "aaa" where name = "alex"; #更新数据

mysql> update students set name = "aaa" where name = "alex";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

update students set age = 25; #批量改数据

mysql> update students set age = 25;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0

delete from students where name = "aaa"; #删除数据

mysql> delete from students where name = "aaa";
Query OK, 1 row affected (0.00 sec)

alter table students add column nal char(32); #插入一个字段:

mysql> select * from students;
+----+------+-----+-----+-------------+------+
| id | name | sex | age | tel | nal |
+----+------+-----+-----+-------------+------+
| 2 | jack | man | 25 | 18600033312 | NULL |
| 3 | tom | man | 25 | 18600033313 | NULL |
| 4 | tom | man | 25 | 18600033313 | NULL |
+----+------+-----+-----+-------------+------+
3 rows in set (0.00 sec)

Mysql操作数据库:

pyton3操作数据库:使用pymysql模块:

import  pymysql

conn  = pymysql.connect(host="10.16.59.102",user="root",passwd="",db="s12day9") #定义主机地址、端口、用户和密码
cur = conn.cursor() #连接数据库之后的状态,游标,现在在是在s10day12
reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Rachel','F',26,3663,"US")) #添加数据
reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Jack','F',23,135343,"CN")) #添加数据
conn.commit() #提交更改,在python 3不提交也是写入到数据库的
conn.close() #关闭conn连接
print(reCount)

python2操作数据库:使用MySQLdb模块:

#/usr/bin/env  python
# -*- coding:utf-8 -*- import MySQLdb
conn = MySQLdb.connect(host="localhost",user="root",passwd="zhang@123",db="s11day12") #实例化对象并定义主机地址、端口、用户和密码
cur = conn.cursor() #连接数据库之后的状态,游标,现在在是在当前数据库之上 #reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Jack1','F',3,135343,"CN")) #reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Rachel1','F',6,3663,"US"))
reCount = cur.execute("select * from students")
data = cur.fetchall() #取到的所有数据
print(data) data1 = data[0] #取获取到的第一个数据
print(list(data1)) #将获取到的数据转换为列表,以方便做下一步操作 cur.close() #关闭游标
conn.close() #关闭会话 执行结果:
C:\Python27\python.exe C:/Users/zhang/PycharmProjects/untitled1/python_mysql.py
((33L, 'tom', 'F', 26, '', 'US'), (73L, 'Rachel', 'F', 6, '', 'US'), (72L, 'Jack', 'F', 3, '', 'CN'), (74L, 'Jack', 'F', 3, '', 'CN'), (75L, 'Rachel', 'F', 6, '', 'US'), (76L, 'Jack1', 'F', 3, '', 'CN'), (77L, 'Rachel1', 'F', 6, '', 'US'))
[33L, 'tom', 'F', 26, '', 'US']

批量插入数据:

#/usr/bin/env  python
# -*- coding:utf-8 -*- import MySQLdb
conn = MySQLdb.connect(host="localhost",user="root",passwd="zhang@123",db="s11day12") #实例化对象并定义主机地址、端口、用户和密码
cur = conn.cursor() #连接数据库之后的状态,游标,现在在是在当前数据库之上
data =[
('a1','M',11,111,'CN'),
('a2','F',19,111,'JP'),
('a3','F',11,111,'USA'),
('a4','F',11,555,'UK'),
] #将列表插入到数据库,数据格式与表中的格式需一致 reCount = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',li) #使用sql通过Python模块将数据插入到MySQL,值为变量,会将后面的列表data传递进去
cur.close() #关闭游标
conn.close() #关闭会话
print(reCount)

事物回滚:

回滚需要表的引擎必须为InnoDB才行,因为MySAM是无事物引擎

#/usr/bin/env  python
# -*- coding:utf-8 -*- import MySQLdb
conn = MySQLdb.connect(host="localhost",user="root",passwd="zhang@123",db="s11day12") #实例化对象并定义主机地址、端口、用户和密码
cur = conn.cursor() #连接数据库之后的状态,游标,现在在是在当前数据库之上 reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Jack1','F',3,135343,"CN"))
reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',('Rachel1','F',6,3663,"US")) conn.rollback()
conn.commit() cur.close() #关闭游标
conn.close() #关闭会话
print(reCount)

Python 第九篇:队列Queue、生产者消费者模型、(IO/异步IP/Select/Poll/Epool)、Mysql操作的更多相关文章

  1. Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型

    一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...

  2. [并发编程 - socketserver模块实现并发、[进程查看父子进程pid、僵尸进程、孤儿进程、守护进程、互斥锁、队列、生产者消费者模型]

    [并发编程 - socketserver模块实现并发.[进程查看父子进程pid.僵尸进程.孤儿进程.守护进程.互斥锁.队列.生产者消费者模型] socketserver模块实现并发 基于tcp的套接字 ...

  3. 进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型

    一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: import param ...

  4. python并发编程-进程间通信-Queue队列使用-生产者消费者模型-线程理论-创建及对象属性方法-线程互斥锁-守护线程-02

    目录 进程补充 进程通信前言 Queue队列的基本使用 通过Queue队列实现进程间通信(IPC机制) 生产者消费者模型 以做包子买包子为例实现当包子卖完了停止消费行为 线程 什么是线程 为什么要有线 ...

  5. 8.12 day31 进程间通信 Queue队列使用 生产者消费者模型 线程理论 创建及对象属性方法 线程互斥锁 守护线程

    进程补充 进程通信 要想实现进程间通信,可以用管道或者队列 队列比管道更好用(队列自带管道和锁) 管道和队列的共同特点:数据只有一份,取完就没了 无法重复获取用一份数据 队列特点:先进先出 堆栈特点: ...

  6. python_way ,day11 线程,怎么写一个多线程?,队列,生产者消费者模型,线程锁,缓存(memcache,redis)

    python11 1.多线程原理 2.怎么写一个多线程? 3.队列 4.生产者消费者模型 5.线程锁 6.缓存 memcache redis 多线程原理 def f1(arg) print(arg) ...

  7. Python3学习之路~9.4 队列、生产者消费者模型

    一 队列queue 当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用. 队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率 列表与队列都是有顺序的,但是他们之间有一个很大的区别 ...

  8. 03:进程Queue --- 生产者消费者模型

    1 进程Queue介绍 1 进程间数据隔离,两个进程进行通信,借助于Queue​2 进程间通信:IPC -借助于Queue实现进程间通信    -借助于文件        -借助于数据库    -借助 ...

  9. python 之 并发编程(生产者消费者模型、守护进程的应用)

    9.8 生产者消费者模型 该模型中包含两类重要的角色: 1.生产者:将负责造数据的任务比喻为生产者 2.消费者:接收生产者造出的数据来做进一步的处理的被比喻成消费者 实现生产者消费者模型三要素:1.生 ...

随机推荐

  1. PHP入门-摘要表格处理问题

    几天来学习下来.PHP和C/C++有太多的阶段似系.所以,简单的入门现在看来已经没有问题.然而,由于所选择的条目是一个高速书籍,难免有些粗糙知识.例如,下面的两个问题让我吃了一些损失. 1. 文件标签 ...

  2. Ext JS学习第十六天 事件机制event(一)

    此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件,相信你一定不陌生, 基本事件是什么?就类似于click.keypress.focus. ...

  3. cordova安装--创建ionic项目

    1.简介ionic ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework ). 可以帮助您使用 Web 技术,比如 HTML.CS ...

  4. [爬虫]通过url获取连接地址中的数据

    1. 要想获取指定连接的数据,那么就得使用HtmlDocument对象,要想使用HtmlDocument对象就必需引用using HtmlAgilityPack; 2. 详细步骤如下:     步骤一 ...

  5. JSON Editor 中文文档

    JSON Editor JSON Editor 根据定义的JSON Schema 生成了一个Html 表单来对JSON进行编辑.它完整支持JSON Schema 的版本3和版本4,并且它集成了一些流行 ...

  6. C3P0连接池参数解释

    <!--acquireIncrement:链接用完了自动增量3个. --> <property name="acquireIncrement">3</ ...

  7. jQuery的扩展

    我们自己通过扩展jQuery来达到 “通过$.xx(paras)的形式来进行调用某个jQuery对象的xx(paras)方法”. 下面就是一个实例: (function(j){//这里的j是一个形参, ...

  8. java 利用java运行时的方法得到当前屏幕截图的方法(转)

    将截屏图片保存到本地路径: package com.test; import java.awt.AWTException; import java.awt.Dimension; import java ...

  9. 关于String.concat()方法和StringBuffer.append()方法的学习:方法是如何追加字符到源字符串的

    问题分析: 首先,看看两段代码的运行结果,两段代码分别是: 第一段代码,关于String.concat()方法的测试: public static void main(String[] args) { ...

  10. IT第五天 - 循环的使用、本周总结 ★★★

    IT第五天 上午 循环 1.while循环.do-while循环.switch语句块的使用 下午 编程 1.编程注释的编写 2.编程力求代码的精简,算法的优化 3.变量的优化使用 小项目 1.swit ...