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局域网ip扫描示例分享
Apr 03 Python
详解Python中的变量及其命名和打印
Mar 11 Python
python字符类型的一些方法小结
May 16 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
python 剪切移动文件的实现代码
Aug 02 Python
Python 判断奇数偶数的方法
Dec 20 Python
用Python画小女孩放风筝的示例
Nov 23 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
对python中各个response的使用说明
Mar 28 Python
Python Json数据文件操作原理解析
May 09 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
python中判断数字是否为质数的实例讲解
Dec 06 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
第四节--构造函数和析构函数
2006/11/16 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
县级文明单位申报材料
2014/05/23 职场文书
应用外语系自荐信
2014/06/26 职场文书
应用心理学专业求职信
2014/08/04 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书