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 相关文章推荐
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
python openpyxl使用方法详解
Jul 18 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
Python使用正则实现计算字符串算式
Dec 29 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
python导入库的具体方法
Jun 18 Python
详解python datetime模块
Aug 17 Python
python如何利用Mitmproxy抓包
Oct 10 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 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 cache类代码(php数据缓存类)
2010/04/15 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
详解python和matlab的优势与区别
2019/06/28 Python
python list转置和前后反转的例子
2019/08/26 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
C语言面试题
2013/05/19 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
机械专业个人求职自荐信格式
2013/09/21 职场文书
单位人事专员介绍信
2014/01/11 职场文书
学生周末长期请假条
2014/02/15 职场文书
大学运动会入场词
2014/02/22 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
爱国教育主题班会
2015/08/14 职场文书