"""
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. android activity and fragment活动周期

    1.状态 /* 每个活动一共有四种状态 *:1.运行状态,就是栈顶的那个 * 2.暂停状态:就是不处于栈顶,但是依然可见,比如对话框下面的界面 * 3.停止状态:不处于栈顶,并且不可见 * 4.销毁状 ...

  2. 【spring mvc】application context的生命周期

    上一次讲application context中bean的生命周期,后面贴了一部分代码,但根本没理解代码意思,有幸在博客园看到一篇关于这部分的代码解析,特别长,特此做了一些整理笔记,并附上链接:htt ...

  3. PHPExcel使用-使用PHPExcel导入文件

    导入步骤: 1. 实例化excel读取对象 2. 加载excel文件 ----------------> ( 1>. 全部加载. 2>. 选择加载. ) 3. 读取excel文件 - ...

  4. PAT 1026 Table Tennis[比较难]

    1026 Table Tennis (30)(30 分) A table tennis club has N tables available to the public. The tables ar ...

  5. soft nofile

    原创文章,转载请注明出处:http://jameswxx.iteye.com/blog/2096461 写这个文章是为了以正视听,网上的文章人云亦云到简直令人发指.到底最大文件数被什么限制了?too ...

  6. python学习第一次

    一,安装python 官网下载地址:https://www.python.org/downloads/windows/ 我下载的是最新的: Download Windows x86 web-based ...

  7. SV中的task和function

    SV中class的properties和methods默认都是public的,但是可以声明为local和protected. 一个properties声明为local类型的,则只在该class中的me ...

  8. 74. Search a 2D Matrix(二分查找,剑指offer 1)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  9. 【week6】团队贡献分

    小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app 完成任务:   10% 20% 70% 好   于淼 李权 中   刘芳芳 杨柳 差       1.李权8.4 2.于 ...

  10. ACM数论之旅10---大组合数-卢卡斯定理(在下卢卡斯,你是我的Master吗?(。-`ω´-) )

    记得前几章的组合数吧 我们学了O(n^2)的做法,加上逆元,我们又会了O(n)的做法 现在来了新问题,如果n和m很大呢, 比如求C(n, m) % p  , n<=1e18,m<=1e18 ...