Python操作使用MySQL数据库的实例代码


Posted in Python onMay 25, 2017

Python 操作 MySQL

配置

  1. win_64
  2. Ubuntu14.04
  3. Python3.x

pip安装pymysql模块

直接使用pip安装 pip install pymysql

win64上直接在cmd中执行

连接本地数据库

使用模块pymysql连接数据库

#!/usr/bin/python
# coding=utf-8
import pymysql
# 连接本地数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='a123', db='samp_db1', charset='utf8')
cursor = conn.cursor()
cursor.execute('select * from bigstu')
for row in cursor.fetchall():
  print(row)
# 查
cursor.execute('select id, name from bigstu where age > 22')
for res in cursor.fetchall():
  print(str(res[0]) + ", " + res[1])
cursor.close()
print('-- end --')

输出:

(1, '张三', '男', 24, datetime.date(2017, 3, 29), '13666665555')
(6, '小刚', '男', 23, datetime.date(2017, 3, 11), '778899888')
(8, '小霞', '女', 20, datetime.date(2017, 3, 13), '13712345678')
(12, '小智', '男', 21, datetime.date(2017, 3, 7), '13787654321')
1, 张三
6, 小刚
-- end --

可以直接执行sql语句。获得的结果是元组。

插入数据

插入一条数据,接上面的代码

insertSql = "insert into bigstu (name, sex, age, mobile) values ('%s','%s',%d,'%s') "
xiuji = ('秀吉', '男', 15, '13400001111')
cursor.execute(insertSql % xiuji)
conn.commit() # 别忘了提交

添加列

在mobile后面添加一列cash

addCo = "alter table bigstu add cash int after mobile"
cursor.execute(addCo)

如果要设置默认值

addCo = "alter table bigstu add cash int default 0 after mobile"
cursor.execute(addCo)

删除数据

删除 name=秀吉 的数据

deleteSql = "delete from bigstu where name = '%s'"
cursor.execute(deleteSql % '秀吉')

删除列

删除cash列

dropCo = "alter table bigstu drop cash"
cursor.execute(dropCo)

修改数据

更新符合条件的数据

updateSql = "update bigstu set sex = '%s' where name = '%s'"
updateXiuji = ('秀吉', '秀吉') # 秀吉的性别是秀吉
cursor.execute(updateSql % updateXiuji)
conn.commit()

事物处理

给某个记录的cash增加

table = "bigstu"
addCash = "update " + table + " set cash = cash + '%d' where name = '%s'"
lucky = (1000, "秀吉")
try:
  cursor.execute(addCash % lucky)
except Exception as e:
  conn.rollback()
  print("加钱失败了")
else:
  conn.commit()

直接执行SQL语句,十分方便

代码片段

给数据库添加列

从json中读取需要添加的列名,获取当前2个表中所有的列名

整理得出需要插入的列名,然后将列插入到相应的表中

import pymysql
import json
import os
import secureUtils
mapping_keys = json.load(open("key_mapping_db.json", "r"))
db_keys = [] # json中所有的key
for k in mapping_keys.values():
  db_keys.append(k)
conn = pymysql.connect(host='localhost', port=3306, user='root',
            passwd='*****', db='db_name', charset='utf8')
cursor = conn.cursor()
table_main = "table_main"
main_table_keys = [] # 主表的列名
cursor.execute("show columns from " + table_main)
for row in cursor.fetchall():
  main_table_keys.append(row[0])
staff_table_keys = []
cursor.execute("show columns from table_second")
for row in cursor.fetchall():
  staff_table_keys.append(row[0])
need_to_insert_keys = []
for k in db_keys:
  if k not in staff_table_keys and k not in main_table_keys and k not in need_to_insert_keys:
    need_to_insert_keys.append(k)
print("need to insert " + str(len(need_to_insert_keys)))
print(need_to_insert_keys)
for kn in need_to_insert_keys:
  print("add key to db " + kn)
  cursor.execute("alter table staff_table add " + kn +" text")
conn.close()

将字段字符改变

这里将main_table_keys中的所有字段改为utf8

# change column character set to utf8
for co in main_table_keys:
  change_sql = "alter table " + table_main + " modify " + co + " text character set utf8"
  print(change_sql)
  cursor.execute(change_sql)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 Python
python中返回矩阵的行列方法
Apr 04 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
Python 3.8 新功能全解
Jul 25 Python
python中append实例用法总结
Jul 30 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
Python实现单例模式的5种方法
Jun 15 Python
Python使用MapReduce进行简单的销售统计
Apr 22 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 #Python
用生成器来改写直接返回列表的函数方法
May 25 #Python
Python随机读取文件实现实例
May 25 #Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 #Python
Python实现的简单dns查询功能示例
May 24 #Python
Python向日志输出中添加上下文信息
May 24 #Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 #Python
You might like
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
JS实现li标签的删除
2019/04/12 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python的类实例属性访问规则探讨
2015/01/30 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
矫正人员思想汇报
2014/01/08 职场文书
小学生读书活动总结
2014/06/30 职场文书
员工工作自我评价
2014/09/26 职场文书
入党转正申请报告
2015/05/15 职场文书
行政处罚告知书
2015/07/01 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android