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以及常用语法的更多相关文章

  1. python链接mysql

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

  2. python链接mysql pymysql

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

  3. python 链接mysql 连接池

    # python 链接mysqlimport mysql.connector.poolingconfig = { "host":"localhost", &qu ...

  4. python 链接mysql

    下载对应版本   安装 https://dev.mysql.com/downloads/connector/python/ 创建链接 # python 链接mysqlimport mysql.conn ...

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

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

  6. Python --链接MYSQL数据库与简单操作 含SSH链接

    项目是软硬件结合,在缺少设备的情况,需要通过接口来模拟实现与设备的交互,其中就需要通过从数据库读取商品的ID信息 出于安全考虑  现在很多数据库都不允许通过直接访问,大多数是通过SSH SSH : 数 ...

  7. python链接mysql以及mysql中对表修改的常用语法

    MySQL是一个关系型数据库管理系统 ,其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库.在使用过程中不总是和它打交道,导致使用时候都得 ...

  8. Django / Python 链接MySQL数据库

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

  9. Python 链接Mysql数据库

    参考链接:https://pypi.python.org/pypi/PyMySQL#downloads import pymysql.cursors,xml.dom.minidom # Connect ...

随机推荐

  1. SiganlR 系列之概述

    简介 SignalR 是微软的 http 长连接(以下简称长连接)框架,它的出现为我们提供了一套行之有效的实时通信的解决方案. 背景 在http 1.0 时代,preRequest 都会建立新的tcp ...

  2. python2.7 使用super关键词 报错 TypeError: must be type, not&n

    错误试验代码: class Base(): def meth(self): print "i'm base" class Derived(Base): def meth(self) ...

  3. javascript数组的常用方法总结

    http://jingyan.baidu.com/album/86fae346bce16d3c49121af9.html?picindex=1 1. concat()方法 数组和数组的 粘结: var ...

  4. CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 CSS样式设置语法全解: 样式优先级 1. !important标记的样式 > 内联样式(sty ...

  5. redis requires Ruby version >= 2.2.2问题

    最近在研究redis的集群,redis官方提供了redis-trib.rb工具,但是在使用之前 需要安装ruby,以及redis和ruby连接: yum -y install ruby ruby-de ...

  6. TCP/IP四层模型与OSI参考模型

    TCP/IP四层模型: 1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序.计算机中对应的网络接口卡 2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路. 3.运输层:主要 ...

  7. windows 本地构建hadoop-spark运行环境(hadoop-2.6, spark2.0)

    下载hadoop http://hadoop.apache.org/releases.html --> http://mirrors.tuna.tsinghua.edu.cn/apache/ha ...

  8. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  9. 通过 PackageManager 获得你想要的 App 信息

    一.前言 开门见山,开篇明义.有些场景下,我们会需要获取一些其它 App 的各项信息,例如:App 名称,包名.Icon 等.这个时候就需要使用到 PackageManager 这个类了. 本篇就 P ...

  10. 安装xp遇到的问题与如何连接共享的打印机

    2013-12-5 星期四 今天下午去给曹老师鼓捣电脑去了,安装了一个xp系统,加上一些常用的办公软件,在连接上一个共享的打印机. 下面是今天我遇到的问题: 问题:安装xp系统之后,没有本地连接,只有 ...