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如何快速实现分布式任务
Jul 06 Python
python实现八大排序算法(1)
Sep 14 Python
python简单实例训练(21~30)
Nov 15 Python
基于Django用户认证系统详解
Feb 21 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
Python实现八皇后问题示例代码
Dec 09 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
python实现画循环圆
Nov 23 Python
Python字符串中删除特定字符的方法
Jan 15 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
python如何将mat文件转为png
Jul 15 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开发规范手册之PHP代码规范详解
2011/01/13 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
puppeteer库入门初探
2019/01/09 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
Python中的进程分支fork和exec详解
2015/04/11 Python
python分析网页上所有超链接的方法
2015/05/08 Python
python如何生成各种随机分布图
2018/08/27 Python
Python异常处理知识点总结
2019/02/18 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python math模块的基本使用教程
2021/01/16 Python
传播学毕业生求职信
2013/10/11 职场文书
大学生入党自我鉴定
2013/10/31 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
电台实习生求职信
2014/02/25 职场文书
公益广告标语
2014/06/19 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏
Win11开始菜单添加休眠选项
2022/04/19 数码科技