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实现多线程下载文件的代码实例
Jun 01 Python
python中Flask框架简单入门实例
Mar 21 Python
理解Python垃圾回收机制
Feb 12 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
python爬取微信公众号文章
Aug 31 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
python os.listdir()乱码解决方案
Jan 31 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
JS实现的简单表单验证功能示例
2017/10/13 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
vue实现放大镜效果
2020/09/17 Javascript
Python实现基于HTTP文件传输实例
2014/11/08 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python读取mysql数据绘制条形图
2020/03/25 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
通用求职信范文模板分享
2013/12/27 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
廉政教育的心得体会
2014/09/01 职场文书
元宵节寄语大全
2015/02/27 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书