12_Python操作MySQL(basic)
"""
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)的更多相关文章
- ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- EF操作MySql
EF的CodeFrist操作MySql的提前准备: 1.安装两个包:MySql.Data和MySql.Data.Entity,在VS中程序包管理器中添加2个包.(备注需要的VS2015,并且EF6支持 ...
- .NET Core 使用Dapper 操作MySQL
MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...
- asp.net core 1.1 升级后,操作mysql出错的解决办法。
遇到问题 core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新.插入操作没有问题. 如果你也遇到这个问题,请参照以下步骤进行升 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- java分享第十七天-03(封装操作mysql类)
JAVA操作mysql所需jar包:mysql-connector-java.jar代码: import java.sql.*; import java.util.ArrayList; import ...
随机推荐
- VUX
1.mapState 2.mapGetters 3. 4. 当你的操作行为中含有异步操作,比如向后台发送请求获取数据,就需要使用action的dispatch去完成.其他使用commit即可. 举个例 ...
- C#静态类,静态构造函数,静态变量
静态变量位于栈上,它是一个全局变量,在编译期就已经生成. public class Cow public static int count; private int id; { id = ++coun ...
- Locust性能测试5-参数化批量注册
前言 实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复. 例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试 准备数据 虚拟用户 ...
- Matlab中图像处理实例:灰度变换,空域滤波,频域滤波,傅里叶变换的实现
http://blog.sciencenet.cn/blog-95484-803140.html % %图像灰度变换 % f = imread('E:\2013第一学期课程\媒体计算\实验一\Img\ ...
- Codeforces 1144G Two Merged Sequences
题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个严格上升,一个严格下降. 思路: 我们考虑每个元素都要进入其中一个序列. 那么我们维护一个上升序列和一个 ...
- Hive 数据类型转换
在Hive的日常使用中经常会遇到需要对字段进行数据类型转换的情况.Hive中的数据类型转换包括隐式转换(implicit conversions)和显式转换(explicitly conversion ...
- 网络营销相关缩写名称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 ...
- WiFi攻击的三种方式
WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象.那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单. WiFi的安全问题 ...
- LWIP使用经验---变态级(转)
源:LWIP使用经验---变态级 LWIP使用经验 一 LWIP内存管理 数据包管理 设置内存大小 宏编译开关 二 LWIP启动时序 三 LWIP运行逻辑 接收数据包 SequentialAPI函数调 ...
- Navicat连不上mysql8
今天使用navicat连接mysql8,发现错误连连 错误1:1130-Host '192.168.50.2' is not allowed to connect to this MySQL serv ...