python中数据库的操作终结

左心房为你撑大大i 提交于 2020-04-06 12:53:11
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.decr 数据表            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='\t')print('\n---------------------------------------')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')# 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.bLEFT 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;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!