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实现ipsec开权限实例
Nov 11 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
pyqt5自定义信号实例解析
Jan 31 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
python自动化发送邮件实例讲解
Jan 04 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
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript 写类方式之十
2009/07/05 Javascript
jquery 防止表单重复提交代码
2010/01/21 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
python格式化字符串实例总结
2014/09/28 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
大家检讨书5000字
2014/02/03 职场文书
职工代表大会主持词
2014/04/01 职场文书
会计实训总结范文
2015/08/03 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers