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实现的检测网站挂马程序
Nov 30 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
对python Tkinter Text的用法详解
Oct 11 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
Python Django的安装配置教程图文详解
Jul 17 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
python判断正负数方式
Jun 03 Python
Python实现验证码识别
Jun 15 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
Python 随机按键模拟2小时
Dec 30 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
js实现iframe动态调整高度的代码
2008/01/06 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
python入门教程之识别验证码
2017/03/04 Python
基于Python List的赋值方法
2018/06/23 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Django框架验证码用法实例分析
2019/05/10 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
德国旅游网站:weg.de
2018/06/03 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
电子信息科学专业自荐信
2014/01/30 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
走群众路线剖析材料
2014/10/09 职场文书
计划生育责任书
2015/05/09 职场文书