zoukankan      html  css  js  c++  java
  • python中数据库的操作终结

    1.什么是数据库:
    数据库是按照数据结构来组织存储和管理数据的仓库
    2.mysql用户设置:
    (1).进入数据库:mysql -u root -p 然后输入密码:xxxxx
    (2).里面有个user表存储的就是表的信息: desc user;
    (3)创建用户
    1.INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
    VALUES ('主机名', '用户名', PASSWORD('密码'), '', '', '');

    由于 mysql 数据库的 user 表中,ssl_cipher、x509_issuer 和 x509_subject 这 3 个字段没有默认值,
    所以向 user 表插入新记录时,一定要设置这 3 个字段的值,否则 INSERT 语句将不能执行。
    在8.0的版本里面已经不支持password函数加密了可以使用MD5或者其他的函数进行加密

    2.CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限
    使用这个创建用户时必须有INSERT 权限或全局 CREATE USER 权限。

    3.GRANT 设置权限(SELECT,INSERT,UPDATE,DELETE,CREATE,DROP) ON 权限范围(数据库.表) TO 参数指定新用户的账号,由用户名和主机名构成; [IDENTIFIED BY [加密方式] '密码']
    8.0后不支持这种方式创建,要先创建用户用上面俩种方式在设置权限
    eg:create user '牛魔王'@'localhost' identified by '123456';
    grant all on *.* to '牛魔王'@'localhost' ;

    在注意需要执行最后FLUSH PRIVILEGES 语句


    (4)删除用户 Delete FROM user Where User='xxx' and Host='xxx';

    数据库的常用操作:
    1.use 数据库; 使用某个数据库
    2.show databases; 查看mysql中的所有数据库
    3.show tables;查看某个数据库的所有表
    4.SHOW COLUMNS FROM 数据表: 显示莫格表的属性
    5.desc 数据表
    6.create database 要创建的数据库名称 charset "utf8"; 创建数据库并且指定可使用的编码;
    7.drop database 数据库名称 ;#删除数据库
    8.SHOW INDEX FROM 数据表:显示数据表的详细索引信息,包括PRIMARY KEY(主键)

    mysql在python的操作:
    第一步利用connect()函数链接数据库,并且返回数据库链接对象
    数据库链接对象里面的方法与属性:
    1.cursor():打开游标
    2.close():关闭数据库
    3.commit():提交事务
    4.rollback():回滚事务
    5:in_transaction:判断是否还在事务中
    6.isolation_level:返回或者设置数据库链接中的事务的隔离等级
    第二步:获取游标
    游标对象的方法:
    1.execute(要执行的sql语句):执行一条sql语句
    2.executemany(要执行的sql语句,几次):重复执行sql语句
    3.executescript(要执行的sql语句):执行多条sql语句(不是2.0的标准方法)
    4.fetchone():查询下一跳条,如果没有了放回None
    5.fetchmany():查询下M行组成列表
    6.fetchall():查询所有的行组成的列表
    7.close()关闭游标
    游标对象的属性:
    1.rowcount:返回受sql影响的行数:
    2.lastrowid:获取最后修改的rowid
    3.arraysize:用于设置或者获取fetchmany()默认获取的条数
    4.description():用于查询最后一次查询放回所有列的的信息
    5.connection:放回创建游标的数据库链接对象
    第三步:执行利用游标sql语句
    第四步:关闭游标
    第五步:关闭数据库链接对象




    1.创建表:CREATE TABLE 表名 (column_name column_type);
    eg:
    c.execute('''create table order_tb(
    order_id int primary key auto_increment,
    name varchar (255),
    pass varchar (255),
    gender varchar (255)
    )''')

    c.execute("""
    create table order_tb(
    order_id integer primary key auto_increment,
    item_name varchar (255),
    item_price double,
    item_number double,
    user_id int,
    foreign key(user_id) references user_tb(user_id)
    )
    """)
    # 4.关闭游标
    c.close()
    # 5.关闭链接
    conn.close()


    2.插入语句 :INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );
    eg:
    import mysql.connector
    # 1.连接数据库,mysql必须现在mysql服务器上创建数据库
    conn = mysql.connector.connect(user='root', password='123456', host='localhost'
    , port='3306', database='python')

    # 2.获取游标
    c = conn.cursor()

    # 3.执行sql语句
    c.execute('insert into user_tb values (null ,%s,%s,%s)', ('孙悟空', '12345', 'male'))
    c.execute('insert into order_tb values (null ,%s,%s,%s,%s)',
    ('鼠标', '32.2', '3', 7))

    # 4.关闭游标
    c.close()
    # 5.提交事务
    conn.commit()
    # 6.关闭链接
    conn.close()


    3.查询:
    SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ] [LIMIT N]
    你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    你可以使用 LIMIT 属性来设定返回的记录数。

    import mysql.connector
    # 1.连接数据库,mysql必须现在mysql服务器上创建数据库
    conn = mysql.connector.connect(user='root', password='123456', host='localhost'
    , port='3306', database='python')
    # 2.获取游标
    c = conn.cursor()
    # 3.执行sql语句
    c.execute('select * from user_tb where user_id>%s',(1,))
    for col in (c.description):
    print(col[0], end=' ')
    print(' ---------------------------------------')
    for row in c:
    print(row) # 游标本身就是一个可迭代对象
    # 4.关闭游标
    c.close()
    # 5.关闭链接
    conn.close()

    4.更改 :UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]
    import mysql.connector
    # 1.连接数据库,mysql必须现在mysql服务器上创建数据库
    conn = mysql.connector.connect(user='root', password='123456', host='localhost'
    , port=3306, database='python, charset='utf8')

    # 2.获取游标
    c = conn.cursor()

    # 3.执行sql语句
    c.execute('update user_tb set name="猪八戒",pass="2222" where user_id =%s',(7,))
    # 4.关闭游标
    c.close()
    # 5.关闭链接
    conn.commit()
    conn.close()

    5.删除:DELETE FROM table_name [WHERE Clause]
    6.模糊查询:
    SELECT field1, field2,...fieldN table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
    1%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)eg(''%猪%')
    2._: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
    3.[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
    4.[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符

    7.排序:
    SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]
    使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
    eg: select *from student where name like binary "%Li" order by stu_id desc;

    8.统计:
    SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
    eg:SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
    eg:SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

    9.1增加字段:alter table 表名 add 字段名 字段类型; #添加phone字段
    9.2删除字段:alter table 表名 drop 字段名称;
    9.3修改字段: alter table表名 MODIFY 字段名 修改成什么类型;
    alter table表名 change i j BIGINT;
    9.4修改表名:alter table表名 rename TO 新表名;


    10.连接JOIN 按照功能大致分为如下三类:
    INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录.
    eg: select * from a INNER JOIN b on a.a = b.b 相当与 select a.*,b.* from a,b where a.a = b.b
    LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    eg:select * from a LEFT JOIN b on a.a = b.b;
    RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
    eg:select * from a RIGHT JOIN b on a.a = b.b;
  • 相关阅读:
    【Nodejs】Http模块01
    第三周周报_微信开发(上)
    Java 程序设计入门_第一周(下)
    Java 程序设计入门_第一周(上)
    NLP with Python-Chapter1 language Processiong and Python--1.1 compute with Language :texts and words
    使用Python访问网络数据 python network-data 第六章(2)
    #1 依次调用脚本
    关于安装第三方模块和PILLOW
    介绍下我治几~
    fibnacci数列
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/12641525.html
Copyright © 2011-2022 走看看