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实现挑选出来100以内的质数
Mar 24 Python
浅析Python中的join()方法的使用
May 19 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
基于python二叉树的构造和打印例子
Aug 09 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
Python无损压缩图片的示例代码
Aug 06 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
python热力图实现的完整实例
Jun 25 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
python实现将文本转换成语音的方法
2015/05/28 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
python 实现端口扫描工具
2020/12/18 Python
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
自主招生自荐信格式
2013/12/03 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS