一、数据库基本操作

1. 想允许在数据库写中文,可在创建数据库时用下面命令create database zcl charset utf8;

2. 查看students表结构desc students;

3. 查看创建students表结构的语句show create table students;

4. 删除数据库drop database zcl;

5. 创建一个新的字段alter table students add column nal char(64);

PS: 本人是很讨厌上面这种“简单解释+代码”的博客。其实我当时在mysql终端写了很多的实例,不过因为当时电脑运行一个看视频的软件,导致我无法Ctrl+C/V。现在懒了哈哈~~

二、python连接数据库

python3不再支持mysqldb。其替代模块是PyMySQL。本文的例子是在python3.4环境。

1. 安装pymysql模块pip3 install pymysql

2. 连接数据库,插入数据实例import pymysql

#生成实例,连接数据库zcl

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')

#生成游标,当前实例所处状态

cur = conn.cursor()

#插入数据

reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Jack','man',25,1351234,"CN"))

reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Mary','female',18,1341234,"USA"))

conn.commit() #实例提交命令

cur.close()

conn.close()

print(reCount)

查看结果:mysql> select* from students;+----+------+-----+-----+-------------+------+

| id | name | sex | age | tel | nal |

+----+------+-----+-----+-------------+------+

| 1 | zcl | man | 22 | 15622341234 | NULL |

| 2 | alex | man | 30 | 15622341235 | NULL |

+----+------+-----+-----+-------------+------+

2 rows in set

3. 获取数据import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')

cur = conn.cursor()

reCount = cur.execute('select* from students')

res = cur.fetchone() #获取一条数据

res2 = cur.fetchmany(3) #获取3条数据

res3 = cur.fetchall() #获取所有(元组格式)

print(res)

print(res2)

print(res3)

conn.commit()

cur.close()

conn.close()

输出:(1, 'zcl', 'man', 22, '15622341234', None)

((2, 'alex', 'man', 30, '15622341235', None), (5, 'Jack', 'man', 25, '1351234', 'CN'), (6, 'Mary', 'female', 18, '1341234', 'USA'))

()

三、事务回滚

事务回滚是在数据写到数据库前执行的,因此事务回滚conn.rollback()要在实例提交命令conn.commit()之前。只要数据未提交就可以回滚,但回滚后ID却是自增的。请看下面的例子:

插入3条数据(注意事务回滚):import pymysql

#连接数据库zcl

conn=pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')

#生成游标,当前实例所处状态

cur=conn.cursor()

#插入数据

reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Jack', 'man', 25, 1351234, "CN"))

reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)', ('Jack2', 'man', 25, 1351234, "CN"))

reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Mary', 'female', 18, 1341234, "USA"))

conn.rollback() #事务回滚

conn.commit() #实例提交命令

cur.close()

conn.close()

print(reCount)

未执行命令前与执行命令后(包含回滚操作)(注意ID号): 未执行上面代码与执行上面代码的结果是一样的!!因为事务已经回滚,故students表不会增加数据!mysql> select* from students;+----+------+--------+-----+-------------+------+

| id | name | sex | age | tel | nal |

+----+------+--------+-----+-------------+------+

| 1 | zcl | man | 22 | 15622341234 | NULL |

| 2 | alex | man | 30 | 15622341235 | NULL |

| 5 | Jack | man | 25 | 1351234 | CN |

| 6 | Mary | female | 18 | 1341234 | USA |

+----+------+--------+-----+-------------+------+

4 rows in set

执行命令后(不包含回滚操作):只需将上面第11行代码注释。mysql> select* from students;+----+-------+--------+-----+-------------+------+

| id | name | sex | age | tel | nal |

+----+-------+--------+-----+-------------+------+

| 1 | zcl | man | 22 | 15622341234 | NULL |

| 2 | alex | man | 30 | 15622341235 | NULL |

| 5 | Jack | man | 25 | 1351234 | CN |

| 6 | Mary | female | 18 | 1341234 | USA |

| 10 | Jack | man | 25 | 1351234 | CN |

| 11 | Jack2 | man | 25 | 1351234 | CN |

| 12 | Mary | female | 18 | 1341234 | USA |

+----+-------+--------+-----+-------------+------+

7 rows in set

总结:虽然事务回滚了,但ID还是自增了,不会因回滚而取消,但这不影响数据的一致性(底层的原理我不清楚~)

四、批量插入数据import pymysql

#连接数据库zcl

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')

#生成游标,当前实例所处状态

cur = conn.cursor()

li = [

("cjy","man",18,1562234,"USA"),

("cjy2","man",18,1562235,"USA"),

("cjy3","man",18,1562235,"USA"),

("cjy4","man",18,1562235,"USA"),

("cjy5","man",18,1562235,"USA"),

]

#插入数据

reCount = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', li)

#conn.rollback() #事务回滚

conn.commit() #实例提交命令

cur.close()

conn.close()

print(reCount)

pycharm下输出: 5

mysql终端显示:mysql> select* from students;   #插入数据前+----+-------+--------+-----+-------------+------+

| id | name | sex | age | tel | nal |

+----+-------+--------+-----+-------------+------+

| 1 | zcl | man | 22 | 15622341234 | NULL |

| 2 | alex | man | 30 | 15622341235 | NULL |

| 5 | Jack | man | 25 | 1351234 | CN |

| 6 | Mary | female | 18 | 1341234 | USA |

| 10 | Jack | man | 25 | 1351234 | CN |

| 11 | Jack2 | man | 25 | 1351234 | CN |

| 12 | Mary | female | 18 | 1341234 | USA |

+----+-------+--------+-----+-------------+------+

7 rows in set

mysql> mysql> select* from students;   #插入数据后+----+-------+--------+-----+-------------+------+

| id | name | sex | age | tel | nal |

+----+-------+--------+-----+-------------+------+

| 1 | zcl | man | 22 | 15622341234 | NULL |

| 2 | alex | man | 30 | 15622341235 | NULL |

| 5 | Jack | man | 25 | 1351234 | CN |

| 6 | Mary | female | 18 | 1341234 | USA |

| 10 | Jack | man | 25 | 1351234 | CN |

| 11 | Jack2 | man | 25 | 1351234 | CN |

| 12 | Mary | female | 18 | 1341234 | USA |

| 13 | cjy | man | 18 | 1562234 | USA |

| 14 | cjy2 | man | 18 | 1562235 | USA |

| 15 | cjy3 | man | 18 | 1562235 | USA |

| 16 | cjy4 | man | 18 | 1562235 | USA |

| 17 | cjy5 | man | 18 | 1562235 | USA |

+----+-------+--------+-----+-------------+------+

12 rows in set

学完的东西要及时总结,有些东西忘记了阿~_~

怎么用python写数据库_如何使用python对数据库(mysql)进行操作相关推荐

  1. python写词法分析器_如何用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  2. 用python写情书_《使用Python进行自然语言处理》学习笔记一 | 学步园

    第一章 语言处理与 Python 一 安装NLTK环境 1.1 windows 7 32的安装 #也可以在CSDN里搜索下载,我为了怕以后找不到了,都有上传过 1. 安装Python2.7(稳定版本, ...

  3. python写透视挂_如何用Python openCV 用透视变换的方法对图像进行矫正

    .需要矫正的图片1 需要矫正的图 矫正后的结果: 矫正后的图 需要矫正的图片2 矫正前 矫正后 # import the necessary packages from imutils.perspec ...

  4. 吃鸡是python写的吗_吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~...

    原标题:吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~ 吃鸡游戏火爆全球,已经把腾讯的<王者荣耀>都比下去了,有传言,腾讯给"王者荣耀"开 ...

  5. 怎么进入命令行操作mysql数据库_MySQL数据库之如何用命令行进入mysql具体操作步骤...

    本文主要向大家介绍了MySQL数据库之如何用命令行进入mysql具体操作步骤 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 如何用命令行进入mysql?最近无意在论坛上看到有朋 ...

  6. python通过什么对象连接数据库_干货!python与MySQL数据库的交互实战

    1 安装pymysql库 如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个 库的安装很简单,直接使用pip install pymysql; 假如上面这种方式还是安 ...

  7. python写词法分析器_[宜配屋]听图阁

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  8. python写词法分析器_用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  9. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

最新文章

  1. 逻辑回归python sigmoid(z)_python实现吴恩达机器学习练习2(逻辑回归)-data1
  2. LightOJ 1030 Discovering Gold(期望 概率)
  3. DDD理论学习系列(9)-- 领域事件
  4. 微信养猫小程序源码搭建教程
  5. 巡查准确率怎么算_【达睿原创】需求预测准确率,你怎么看 ?
  6. sql server 分区_SQL Server:锁定设置以用于增强分区功能
  7. [原创]测试用例设计之“功能图”法
  8. *第十三周*数据结构实践项目一【验证Prim算法】
  9. qq音乐下载|qq音乐播放器下载
  10. 深度学习——常用数据标注工具总结
  11. BeanShell用法汇总
  12. 解决 Missing GL version
  13. (五)学习笔记:软件管理rpm、dnf软件仓库搭建与管理
  14. 计算机小键盘如何启用,教你电脑开机时小键盘自动启用方法
  15. Best Free Web Applications
  16. 嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)
  17. 耿丹CS16-2班第四次作业汇总
  18. 2022跨年烟花代码(四)HTML5全屏烟花动画特效
  19. flex: 0 0 auto
  20. 英语语言学专业学习计算机语言学,英语语言学

热门文章

  1. Python学习笔记:第三方模块2
  2. 计算机创建任务计划,win7系统创建任务计划的方法 如何创建任务计划
  3. 【壁纸】(可商用) 70枚壁纸高清免费
  4. <马哲>不变资本与可变资本及其划分意义2017-12-26
  5. 后端接收到信息并返回了但是前端无响应_Bug的噩梦:前端调试必备的7个“大杀器”...
  6. delphi 中的dll编程注意事项
  7. VS2008 ,TFS2008破解序列号
  8. 【解惑】这么多技术我该怎么学
  9. 单片机文件系统的学习
  10. 不同的寻址方式的应用——将每行的单词都变成大写