zoukankan      html  css  js  c++  java
  • python 之 mysql

    mysql操作

    mysql之百度讲解

    请自行安装mysql服务及mysql客户端,官网地址 http://dev.mysql.com/downloads/mysql/

    mysql详细安装,操作请参考 http://www.cnblogs.com/wupeiqi/articles/5699254.html

    mysql的一些简单语句

    SHOW DATABASES;  #查看当前数据库的的库名
    USE test;  #使用test库
    SHOW TABLES;     #查看当前库名中的表
    CREATE DATABASE students;  #创建一个数据库名字为students
    FLUSH PRIVILEGES;   #刷新系统权限表
    # 创建用户
        create user '用户名'@'IP地址' identified by '密码';
    # 删除用户
        drop user '用户名'@'IP地址';
    # 修改用户
        rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
    # 修改密码
        set password for '用户名'@'IP地址' = Password('新密码')
    
    # 授权管理:
        show grants for '用户'@'IP地址'                  -- 查看权限
        grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权
        revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限
    
    # 创建表
        create table 表名(
            列名  类型  是否可以为空,
            列名  类型  是否可以为空
        )
    # 删除表
        drop table 表名
    # 清空表
        delete from 表名
        truncate table 表名
    
    # 修改表
        添加列:alter table 表名 add 列名 类型
        删除列:alter table 表名 drop column 列名
        修改列:
                alter table 表名 modify column 列名 类型;  -- 类型
                alter table 表名 change 原列名 新列名 类型; -- 列名,类型
     
        添加主键:
                alter table 表名 add primary key(列名);
        删除主键:
                alter table 表名 drop primary key;
                alter table 表名  modify  列名 int, drop primary key;
     
        添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
        删除外键:alter table 表名 drop foreign key 外键名称
     
        修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
        删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
        
    mysql数据库sql语句基本操作

    mysql API pymsql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。

    一、下载安装:

    1
    pip3 install pymysql

    二、基本使用

    1、创建连接,并执行SQL,简单实例

    #!/bin/bin/env python
    # -*-coding:utf-8 -*-
    # Author : rain
    
    import pymysql
    
    # 创建连接
    conn = pymysql.connect(host='127.0.0.1', port='3306', user='root', passwd='123456', db='test')
    # 创建游标
    cursor = conn.cursor()
    # 执行sql语句插入一行数据,并返回受影响的行数
    res = cursor.execute("insert into students (name, adress) values ('rain', 'china') ")
    # 提交数据,否则sql语句不生效
    conn.commit()
    # 关闭游标
    cursor.close()
    # 头闭连接
    conn.close()
    #!/bin/bin/env python
    # -*-coding:utf-8 -*-
    # Author : rain
    
    import pymysql
    
    # '''
    
    # 创建连接
    conn = pymysql.connect(host='127.0.0.1', port='3306', user='root', passwd='123456', db='test')
    # 创建游标
    cursor = conn.cursor()
    # 删除表
    reste = cursor.execute('delete from hello')
    # 创建表
    rest = cursor.execute("create table hello(id int AUTO_INCREMENT primary key not null,name CHAR(24) not null)")
    # 执行sql语句插入一行数据,并返回受影响的行数
    res = cursor.execute("insert into students (name, adress) values ('rain', 'china') ")
    # 一次性插入多条数据,并返回受影响的行数
    res1 = cursor.executemany("insert into students(name, adress))values(%s, %s)", [('yxy', 'china'), ('window', 'UK')])
    # 更新一条数据
    res2 = cursor.execute("update students set name='windows' where address ='UK'")
    # 删除一条数据
    res3 = cursor.execute("delete from students where id=1 and name='UK'")
    # 删除整张表
    res4 = cursor.execute("delete from students")
    
    
    # 提交数据,否则sql语句不生效
    conn.commit()
    # 关闭游标
    cursor.close()
    # 头闭连接
    conn.close()
    
    # 获取最新自增ID
    new_id = cursor.lastrowid
    增、删、查、改

    2、获取查询数据

    # 创建连接
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='test')
    # 创建游标
    cursor = conn.cursor()
    # 执行sql语句 cursor.execute(),并返回受影响的行数
    restin = cursor.execute("insert into students ( name, address) values('hi', 'china')")
    # 执行查询语句
    rest = cursor.execute('select * from test.students')
    print(rest)
    # 获取最新自增ID,必须放在insert语句下面
    new_id = cursor.lastrowid
    print(new_id)
    
    # 读取第一条记录
    queryone = cursor.fetchone()
    # (1, 'yxy', 'china')
    
    # 获取前三条记录,从上一个fetchone结束的地方开始
    querymany = cursor.fetchmany(4)
    # ((2, 'rain', 'UK'), (3, 'windows', 'china'), (4, 'pay', 'Uk'), (5, 'pay', 'Uk'))
    
    # 获取全部数据,从上一个fetchmany结束的地方开始
    queryall = cursor.fetchall()
    # ((6, 'hello', 'china'), (7, 'hello', 'china'), (8, 'hello', 'china'))
    print(queryone)
    print(querymany)
    print(queryall)
    
    # 提交数据,否则sql语句不生效
    conn.commit()
    # 关闭游标
    cursor.close()
    # 头闭连接
    conn.close()

    注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

    • cursor.scroll(1,mode='relative')  # 相对当前位置移动
    • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

     

    3、fetch数据类型

      关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import pymysql
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',db='test')
    # 将游标设置成字典类型
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    a = cur.execute('select * from students')
    print(a)
    result = cur.fetchmany(3)
    # ({'name': 'yxy', 'id': 1, 'address': 'china'}, 
    # {'name': 'rain', 'id': 2, 'address': 'UK'}, 
    # {'name': 'windows', 'id': 3, 'address': 'china'})
    print(result)
    
    conn.commit()
    cur.close()
    conn.close()

    如有另外见解,稍后补充。。。

  • 相关阅读:
    模拟测试48
    模拟测试47
    模拟测试46
    NOIP模拟测试29(A)
    NOIP模拟测试19
    NOIP模拟测试18(T3待更新)
    杂题
    noip模拟测试18 T2搜索
    noip模拟测试17 2019-08-11 考后反思
    noip模拟测试14 20190807 考试反思
  • 原文地址:https://www.cnblogs.com/yxy-linux/p/5704683.html
Copyright © 2011-2022 走看看