zoukankan      html  css  js  c++  java
  • Python 第九篇:队列Queue、生产者消费者模型、(IO/异步IP/Select/Poll/Epool)、Mysql操作

    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  studentsG;
    *************************** 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,'18600033313');
    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="123456",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:Python27python.exe C:/Users/zhang/PycharmProjects/untitled1/python_mysql.py
    ((33L, 'tom', 'F', 26, '3663', 'US'), (73L, 'Rachel', 'F', 6, '3663', 'US'), (72L, 'Jack', 'F', 3, '135343', 'CN'), (74L, 'Jack', 'F', 3, '135343', 'CN'), (75L, 'Rachel', 'F', 6, '3663', 'US'), (76L, 'Jack1', 'F', 3, '135343', 'CN'), (77L, 'Rachel1', 'F', 6, '3663', 'US'))
    [33L, 'tom', 'F', 26, '3663', '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)
  • 相关阅读:
    vue-router 动态路由
    vue-router 路由配置
    vue通信之子父组件通信
    vue组件通信之父组件主动获取子组件数据和方法
    vue 笔记,ref 及 $event 事件对象
    vue组件通信之非父子组件通信
    vue组件通信之父子组件通信
    localStorage使用总结(转载)
    jQuery 实现复选框全选、反选及获取选中的值
    jQuery 对象与 Dom 对象转化
  • 原文地址:https://www.cnblogs.com/zhang-shijie/p/5279036.html
Copyright © 2011-2022 走看看