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地址合法性的方法实例
Mar 13 Python
Python常用内置函数总结
Feb 08 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
Python语言描述随机梯度下降法
Jan 04 Python
Python中一行和多行import模块问题
Apr 01 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
通过python爬虫赚钱的方法
Jan 29 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
详解Python IO编程
Jul 24 Python
python解包用法详解
Feb 17 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
PHP7常量数组用法分析
2016/09/26 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
金士达面试非笔试
2012/03/14 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
高中生毕业自我鉴定
2013/10/10 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
2015年班组工作总结
2015/04/20 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python