MySQL是一个关系型数据库管理系统 ,其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。在使用过程中不总是和它打交道,导致使用时候都得查看具体的语法。下面为大家稍作总结一些常用到的(虽然常用的都背的溜溜的~)

在python3中使用mysql首先导入pymysql模块,没有这个模块的可以进行pip安装,要是mysql也没有的话,,参考http://www.cnblogs.com/xsmile/p/7753984.html进行安装。

进入mysql中,查看当前的含有的数据库都有哪些:

mysql -h localhost -u root -p    输入密码进入mysql环境。

show databses;  #显示当前数据库列表

show tables;  #显示当前数据库中包含的所有表

create database db_name default character set utf8 collate utf8_general_ci;  #创建数据库,字符集为utf-8的格式

alter table table_name default character set utf8;   # 修改现有表的编码集

show create table table_name;  #查看表结构

desc table_name;  #查看表结构

alter table old_name rename to new_name  #修改数据表名

alter table table_name change old_column_name new_column_name new_type  #修改列名

alter tale table_name modify column_name new_type  #修改列的数据类型

alter table table_name add column_name datatype  #插入列

alter rable table_name drop column column_name  #删除列

alter table table_name modify column column_name int primary key auto_increment;  #更改列为自增字段(前提是该字段为主键)

要在dos窗口操作数据库,先选择一个数据库,才能进行对其当中的表进行操作。即  use db_name;

我以test 数据库中 blog_test表操作为例:

 mysql> use test;
Database changed
mysql> select * from blog_test;

之后屏幕输出:

+----------+-----------------+--------+
| username | email | gender |
+----------+-----------------+--------+
| charles | charles@163.com | male |
| jerry | jerry@qq.com | female |
| xsmile | xsmile@163.com | male |
+----------+-----------------+--------+
3 rows in set (0.03 sec)

当然重点在python中对mysql的操作,基本分为:

1、导入pymysql ;  2、链接到某个数据库;  3、创建游标;  4、要操作的语法。

在数据库中创建表:

 import pymysql  #导入包
db=pymysql.connect(host='localhost',user='root',passwd='',db='test')  #链接数据库
cursor=db.cursor()  #创建游标,对表进行操作
cursor.execute("drop table if EXISTS blog_test")  #如存在blog_test表,则删除
cursor.execute("create table blog_test( \
username char (20) ,\
email CHAR (20) NOT NULL ,\
gender CHAR (6) NOT NULL,\
PRIMARY key(username))charset=utf8")  #charset=utf8 使得表支持中文,否则默认为Latin1
cursor.close()
db.commit()
db.close()

创建一个空表也没什么用啊,里面有内容才有价值,才有使用的意义啊。

数据库中插入数据。

 cursor.execute("insert into blog_test(username,email,gender) values('xsmile','xsmile@163.com','male')")

很生动形象的语句,和mysql中语法简直一样。以后学到sqlalchemy 这个模块时就会方便很多了~,数据库中插入多条语句时用多条insert 语句。这里我们在代码中就有简洁的方法,对要插入的内容创建列表,就完成了多条插入。

 ins="insert into blog_test VALUES (%s,%s,%s)"
datas=[ ('charles','charles@163.com','male'),('jerry','jerry@qq.com','female'),]
cursor.executemany(ins,datas)

插入这里用的是:cursor.executemany() ,不过有个小提示,下面有 db.commit() 才可以实现插入到表中。不然虽无错误,但插不到表中。

先进行查询看看表中数据

 import pymysql  #导入模块
db=pymysql.connect(host='localhost',user='root',passwd='',db='test')  #链接到数据库
cursor=db.cursor()  #创建游标对表进行相关操作
li=cursor.execute("select * from blog_test")  #对表进行查询
print(li)
cursor.close()  #关闭游标
db.close()  #断开数据库

这时我们发现输出的结果是一个数字 3,什么情况,查看数据库表即blog_test看到当中有3条数据。原来如此,那我们想显示那3条数据怎么办呢?!

当然是循环了,依次对表中元组输出。

 info=cursor.fetchmany(li)
for item in info:
print(item)

还有cursor.fetchone() ,表示从中取一条数据。取其中元组时还有cursor.fetchall(), 不需要参数,取得的数据为游标当前位置到数据末尾的全部数据。在进行条件查询时可以加入where条件,语句和mysql中方法是一样的。

上面提到的有查询和插入,接下来看看更改操作。

 cursor.execute("update blog_test set username='sofia' where email='xsmile@163.com'")

注意在查询字段中引号的使用,不能缺少。

删除操作的话想必大家都知道了,把mysql语句放在cursor.execute()中,即可完成相关操作。那我们把刚才更改的那行数据进行删除。

 cursor.execute("delete from blog_test where username='sofia'")

之后再查询blog_test表,名为sofia的数据信息就删除了。当然要删除整个表的话,就使用drop语句了,三思后行这个操作,不然你就是删库到跑路的那个人~

删除以及开启事务及回滚

在进行插入、更改,删除(delete)操作时,可以事先开启事务,这样当出错或返回时只需rollback回滚下就恢复为原来的数据了(在pycharme中默认开启事务,但最后还有commit(),这样程序执行后,也是无法弥补的)。例如:

 mysql> select * from b;  #查看b表数据
+------+
| b |
+------+
| 4 |
| 5 |
| 6 |
| 7 |
+------+
4 rows in set (0.00 sec) mysql> begin;  #开启事务
Query OK, 0 rows affected (0.00 sec) mysql> delete from b where b=5;  #把为5的元组删除
Query OK, 1 row affected (0.05 sec) mysql> select * from b;
+------+
| b |
+------+
| 4 |
| 6 |
| 7 |
+------+
3 rows in set (0.00 sec) mysql> rollback;  #回滚
Query OK, 0 rows affected (0.11 sec) mysql> select * from b;
+------+
| b |
+------+
| 4 |
| 5 |
| 6 |
| 7 |
+------+
4 rows in set (0.00 sec)

但是drop(将表格直接删除,没有办法找回)、以及truncate(删除表中的所有数据,不能与where一起使用)删除时回滚也挽回不了删除的数据。

原创不易,尊重版权。转载请注明出处:http://www.cnblogs.com/xsmile/

python链接mysql以及mysql中对表修改的常用语法的更多相关文章

  1. PHP中Smarty引擎的常用语法

    PHP中Smarty引擎的常用语法 输出今天的日期: {$smarty.now|date_format:"%H:%M %A, %B %e, %Y"} 实际上用到了PHP的time( ...

  2. python MVC、MTV 框架介绍 Django 模板系统常用语法

    Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命 ...

  3. 字符串函数 mysql 和sqlserver 中对于字符串的常用函数和区别

    1. 对于字符串大小写的统一 mysql和sqlserver中都有同名函数lower()和upper(),但是mysql中还有另外一对函数,达到同样的目的,lcase()和ucase(),也就是英文中 ...

  4. python类属性在继承中的修改的影响

    class A(object): x = 1 class B(A): pass class C(A): pass # 通过父类修改类属性,子类继承的类属性也改变 A.x = 3 print(A.x, ...

  5. python学习道路(day12note)(mysql操作,python链接mysql,redis)

    1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...

  6. 用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  7. Django / Python 链接MySQL数据库

    https://www.cnblogs.com/wupeiqi/articles/5237704.html python (Django)中使用MySQL 首先python3中没有 MySQLdb 需 ...

  8. python链接mysql

    1.安装MySQLdb MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 下载地址: ht ...

  9. python链接mysql pymysql

    python链接mysql import pymysql conn = pymysql.connect(user=', database='gbt2019', charset='utf8') curs ...

随机推荐

  1. 自定义函数,根据p个数,自适应剧中效果

    //最后投保进程line-height 自适应居中; function self_adaption(){ $('.last_place').each(function(){ var _this = $ ...

  2. WPF DataGrid ListView 等等 改变 选中行 颜色;以及 不变的原因

    WPF中改变选中行的颜色是很简单的,就是用触发器:比如:以DataGrid为例: DataGrid.RowStyle Style TargetType= DataGridRow SetterPrope ...

  3. [技巧篇]00.TrimFilter去掉jsp页面空白,提升访问速度

    最近感觉项目访问的速度有点慢,我就在网络中一顿搜索,发下了一个好东东,忍不住跟大家分享,希望大家可以试一试,确实有提升的空间啊!要求去除空白区.提取公用代码.减小页面. 胖先生乱搜之下,找到了Trim ...

  4. 洛谷 P1044 栈

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何 ...

  5. SPOJ AMR11E Distinct Primes 基础数论

    Arithmancy is Draco Malfoy's favorite subject, but what spoils it for him is that Hermione Granger i ...

  6. Java反射中method.isBridge() 桥接方法

    桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法.我们可以通过Method.isBridge()方法来判断一个方法是 ...

  7. Mac 上真机调试cocos2d-x-3.16的test程序

    文章比较长,一个算是新手又不是新手的程序员的解决过程. 一 xcode中打开项目 首先,下载完成cocos2d-x-3.16之后,解压,然后在根目录build目录下双击cocos2d_tests.xc ...

  8. HDU 1599 find the mincost route (最短路 floyd)

    题目链接 Problem Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....V ...

  9. FZUOJ 2205 据说题目很水 (无三元环图最大边数)

    Problem Description Sunday最近对图论特别感兴趣,什么欧拉回路什么哈密顿回路,又是环又是树.在看完一本书后,他对自己特别有信心,便找到大牛牛犇犇,希望他出一题来考考自己. 在遥 ...

  10. python初步学习-pycharm使用 (二)

    pycharm调试模式 假设我们的程序在运行过程中命中了一个错误,那我们如何定位错误发生的位置?这就需要进行调试. 在Pycharm中我们可以在其中直接对程序进行调试,唯一需要做的准备工作就是在程序必 ...