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 相关文章推荐
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python 求数组局部最大值的实例
Nov 26 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python实现GIF图倒放
Jul 16 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 Python
python process模块的使用简介
May 14 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将session放入memcached的设置方法
2014/02/14 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
Python内存管理实例分析
2019/07/10 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
网络研修随笔感言
2014/02/17 职场文书
保护母亲河倡议书
2014/04/14 职场文书
工业设计专业自荐书
2014/06/05 职场文书
学生上课说话检讨书
2014/10/25 职场文书
投诉书格式范本
2015/07/02 职场文书