"""
Test connection to MySQL
using mysql-client conn = MySQLdb.connect(host,port,user,passwd,db,charset)
cursor = conn.cursor() cursor.execute(sql, (arg1,arg2,arg3...))
conn.commit()
conn.rollback() cursor.description # (col1,...),(col2,....),(col3,...),(col4,...)
cursor.rowcount columns = map(lambda e:e[0], cursor.description)
columns = tuple(columns) # (col1,col2,col3...)
cur_record = cursor.fetchone() # (key1,key2,key3...) cur_result = dict(zip(columns,cur_record)) # {col1:key1, col2:key2, col3:key3....} cursor.close() # no more operation is valid if cursor closed
conn.close() # close connection to MySQL database """
import MySQLdb
import datetime class MySQLHandler():
  def __init__(self):
    self.conn = None
    self.cursor = None
    self.cur_record = ()
    self.host = ''
    self.port = 0
    self.user = ''
    self.passwd = ''
    self.db = ''
    self.charset = 'utf8' def connect(self, host, port, user, passwd, db, charset):
  self.host = host
  self.port = port
  self.user = user
  self.passwd = passwd
  self.db = db
  self.charset = charset   try:
    self.conn = MySQLdb.connect(
    host = self.host,
    port = self.port,
    user = self.user,
    passwd = self.passwd,
    db = self.db,
    charset = self.charset
  )
  self.cursor = self.conn.cursor()
  except MySQLdb.Error as e:
    print("Conn MySQL Error, %d: %s" %(e.args[0], e.args[1]) ) def execute_one(self, sql, args):
  self.cursor.execute(sql, args) def insert_one(self,sql,args):
  try:
    # 如果多条插入语句都没异常,则直接通过commit()将数据写入db
    # 如果任意一条语句产生异常,则进入except处理(还没运行try中的commit)
    # except中可以全部不提交,或者提交没触发异常的sql语句
    # 全部不提交, 则except中写入:self.conn.commit()
    # 部分提交(没触发异常的语句结果,则except中写入:self.conn.commit()     self.cursor.execute(sql,args)
    # write changes to db, if no exception
    self.conn.commit()
  except :
    # drop data, if any exception happens, no data saved to db
    self.conn.rollback() def delete_one(self,sql,args):
  try:
  # 如果多条delete语句都没异常,则直接通过commit()将数据写入db
  # 如果任意一条语句产生异常,则进入except处理(还没运行try中的commit)
  # except中可以全部不提交,或者提交没触发异常的sql语句
  # 全部不提交, 则except中写入:self.conn.commit()
  # 部分提交(没触发异常的语句结果,则except中写入:self.conn.commit()     self.cursor.execute(sql,args)
    # write changes to db, if no exception
    self.conn.commit()
  except :
    # drop data, if any exception happens, no data saved to db
    self.conn.rollback() def show(self):
  # show row count
  print("Row Count: " + str(self.cursor.rowcount))   # get table column name
  columns = map(lambda e: e[0], self.cursor.description)
  columns = tuple(columns)   # show all results
  self.cur_record = self.cursor.fetchone()
  while self.cur_record != None:
    print( dict(zip(columns, self.cur_record)) )
    self.cur_record = self.cursor.fetchone() def close(self):
  # close connection to mysql
  self.cursor.close()
  self.conn.close()   # reset attributes
  self.conn = None
  self.cursor = None
  self.cur_record = ()
  self.host = ''
  self.port = 0
  self.user = ''
  self.passwd = ''
  self.db = ''
  self.charset = 'utf8' # Test MySQLHandler, create connection
mysql_handler = MySQLHandler()
mysql_handler.connect('localhost', 3306, 'root', 'weilan0415', 'news', 'utf8') # prepare sql to execute
# sql = 'select * from employees where salary > %s limit %s, %s'
# args = (2500, 0, 10) # run 1 sql operation
# mysql_handler.execute_one(sql, args) # insert one record into mysql
sql = 'insert into news (title, image, content, types, create_at, is_valid) ' \
'value (%s, %s, %s, %s, %s, %s);'
cur_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
mysql_handler.insert_one(sql, ("new222", "D:\\Durian.jpg", "新闻内容222", "美食", cur_time, 1) ) # delete
sql = 'delete from news where id between 6 and 10'
mysql_handler.delete_one(sql, ()) # query
sql = 'select * from news'
mysql_handler.execute_one(sql, ()) # show result
mysql_handler.show() # close connection
mysql_handler.close()

12_Python操作MySQL(basic)的更多相关文章

  1. ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)

    操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...

  2. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  3. EF操作MySql

    EF的CodeFrist操作MySql的提前准备: 1.安装两个包:MySql.Data和MySql.Data.Entity,在VS中程序包管理器中添加2个包.(备注需要的VS2015,并且EF6支持 ...

  4. .NET Core 使用Dapper 操作MySQL

    MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...

  5. asp.net core 1.1 升级后,操作mysql出错的解决办法。

    遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新.插入操作没有问题. 如果你也遇到这个问题,请参照以下步骤进行升 ...

  6. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  7. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  8. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  9. java分享第十七天-03(封装操作mysql类)

     JAVA操作mysql所需jar包:mysql-connector-java.jar代码: import java.sql.*; import java.util.ArrayList; import ...

随机推荐

  1. VUX

    1.mapState 2.mapGetters 3. 4. 当你的操作行为中含有异步操作,比如向后台发送请求获取数据,就需要使用action的dispatch去完成.其他使用commit即可. 举个例 ...

  2. C#静态类,静态构造函数,静态变量

    静态变量位于栈上,它是一个全局变量,在编译期就已经生成. public class Cow public static int count; private int id; { id = ++coun ...

  3. Locust性能测试5-参数化批量注册

    前言 实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复. 例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试 准备数据 虚拟用户 ...

  4. Matlab中图像处理实例:灰度变换,空域滤波,频域滤波,傅里叶变换的实现

    http://blog.sciencenet.cn/blog-95484-803140.html % %图像灰度变换 % f = imread('E:\2013第一学期课程\媒体计算\实验一\Img\ ...

  5. Codeforces 1144G Two Merged Sequences

    题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个严格上升,一个严格下降. 思路: 我们考虑每个元素都要进入其中一个序列. 那么我们维护一个上升序列和一个 ...

  6. Hive 数据类型转换

    在Hive的日常使用中经常会遇到需要对字段进行数据类型转换的情况.Hive中的数据类型转换包括隐式转换(implicit conversions)和显式转换(explicitly conversion ...

  7. 网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析

    网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析 CPM CPT CPC CPA CPS SEM SEO在网络营销中是什么意思?SEO和SEM的区别是? CPM(Cost ...

  8. WiFi攻击的三种方式

    WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象.那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单. WiFi的安全问题 ...

  9. LWIP使用经验---变态级(转)

    源:LWIP使用经验---变态级 LWIP使用经验 一 LWIP内存管理 数据包管理 设置内存大小 宏编译开关 二 LWIP启动时序 三 LWIP运行逻辑 接收数据包 SequentialAPI函数调 ...

  10. Navicat连不上mysql8

    今天使用navicat连接mysql8,发现错误连连 错误1:1130-Host '192.168.50.2' is not allowed to connect to this MySQL serv ...