#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "blzhu"
"""
python study
Date:2017
"""
import pymysql
import types
try:
# 获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='zbltest1', port=3306, charset='utf8')
cur = conn.cursor() # 获取一个游标
cur.execute("DROP table if exists student")
sql = """CREATE TABLE IF NOT EXISTS `student` (
`zid` int(11) NOT NULL ,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`zid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8"""
cur.execute(sql)
for i in range(1, 100):
zbl_id = str(i)
zbl_name = 'zbl'+str(i)
zbl_age = i # 赋值类型一定要正确
sql = "INSERT student VALUES ('%s','%s','%s')" % (zbl_id, zbl_name, zbl_age)
print(sql)
cur.execute(sql)
conn.commit()# 将数据写入数据库 cur.execute('select * from student')
# data=cur.fetchall()
for d in cur:
# 注意int类型需要使用str函数转义
print("ID: " + str(d[0]) + ' 名字: ' + d[1] + " 年龄: " + str(d[2]))#当非字符串输出时一定加str()将之转换成字符串
print("row_number:", (cur.rownumber))
# print('hello') cur.close() # 关闭游标
conn.close() # 释放数据库资源
except Exception:
print("发生异常")

记得每次运算后在mysql workbench中要刷新才能体现出来有没有新增表格。


上面的代码修改后:

     sql = """CREATE TABLE IF NOT EXISTS `student` (
`zid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`zid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2"""

运行结果仍然一样,可以理解为自动增加的优先级不如手动增加的优先级。

但若修改为下面:

sql = "INSERT into 'student' VALUES ('%s','%s','%s')" % (zbl_id, zbl_name, zbl_age)

就会发生错误,错在student不应该加引号。into加不加都行。

sql = "INSERT into 'student' ('zid','name','age') VALUES ('%s','%s','%s')" % (zbl_id, zbl_name, zbl_age)
也会发生错误。

1.DB-API

应用程序编程接口(API)是访问某些服务的函数集合,DB-API是python中访问关系型数据库的API,它定义了一系列必要的对象和数据库获取方式,以便为各种各样的底层数据库系统和各种各样的数据库程序提供一致的访问接口。
Python DB-API的使用流程:
引入API模块
获取与数据库的连接
执行SQl语句和存储过程
关闭数据库连接
DB-API的主要函数:
connect():连接数据库,包含参数用户名、密码、服务器地址等等
cursor():创建一个cursor对象来管理下查询
execute()和executemany():对数据库执行一个或者多个SQL命令
fetchone()、fetchmany()和fetchall():得到execute之后的结果
2.Python3.4连接MySQL的环境搭建(参考)
http://blog.csdn.net/yannanxiu/article/details/50486887
3.python操作MySQl简单实例:
import mysql.connector
#打开数据库连接
db=mysql.connector.connect(user='root',password='root',host='localhost',database='words')
#使用cursor()方法创建一个cursor对象,来管理查询
cur=db.cursor()
#使用execute()方法执行SQL,如果存在则删除
cur.execute("drop table if exists users")
#使用预处理创建表
cur.execute(" create table users (id INT,name varchar(8))")
try:
    #插入数据
    cur.execute("insert into users values(1,'www'),(2,'sss'),(3,'ccc'),(4,'tsgs')")
    #查询
    cur.execute("select * from users")
    for row in cur.fetchall():
        print('%s\t%s' %row)
    #更新
    cur.execute("update users set name='HAN' where id>2")
    #查询
    cur.execute("select * from users")
    for row in cur.fetchall():
        print('%s\t%s' %row)
    #删除
    cur.execute("delete from users where name='HAN'")
    #查询
    cur.execute("select * from users")
    for row in cur.fetchall():
        print('%s\t%s' %row)
except:
    #发生错误时回滚
    db.rollback()
    print("Error,。。。。")
#关闭
db.close()
结果:
1 www
2 sss
3 ccc
4 tsgs
 
1 www
2 sss
3 HAN
4 HAN
 
1 www
2 sss
 
4.错误处理
DB-API中定义了一些数据库操作的错误及异常
参考:http://blog.sina.com.cn/s/blog_154cb570b0102wmyw.html

下面是增删改查功能:

 #!/usr/bin/python3
import pymysql
import types db=pymysql.connect("localhost","root","","python"); cursor=db.cursor() #创建user表
cursor.execute("drop table if exists user")
sql="""CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0""" cursor.execute(sql) #user插入数据
sql="""INSERT INTO `user` (`name`, `age`) VALUES
('test1', 1),
('test2', 2),
('test3', 3),
('test4', 4),
('test5', 5),
('test6', 6);""" try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback() #更新
id=1
sql="update user set age=100 where id='%s'" % (id)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback() #删除
id=2
sql="delete from user where id='%s'" % (id)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback() #查询
cursor.execute("select * from user") results=cursor.fetchall() for row in results:
name=row[0]
age=row[1]
#print(type(row[1])) #打印变量类型 <class 'str'> print ("name=%s,age=%s" % \
(age, name))

下面是我的增删改查:

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "blzhu"
"""
python study
Date:2017
"""
import pymysql
import types
try:
# 获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='zbltest1', port=3306, charset='utf8')
cur = conn.cursor() # 获取一个游标
cur.execute("set global max_allowed_packet = 100 * 1024 * 1024 ")
cur.close() # 关闭游标
conn.close() # 释放数据库资源 conn = pymysql.connect(host='localhost', user='root', passwd='root', db='zbltest1', port=3306, charset='utf8')
cur = conn.cursor() # 获取一个游标
cur.execute("DROP table if exists student")
sql = """CREATE TABLE IF NOT EXISTS `student` (
`zid` int(101) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(101) NOT NULL,
PRIMARY KEY (`zid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""
cur.execute(sql)
# 增加
for i in range(1, 10):
zbl_id = str(i)
zbl_name = 'zbl'+str(i)
zbl_age = i # 赋值类型一定要正确
# sql = "INSERT student VALUES ('%s','%s','%s')" % (zbl_id, zbl_name, zbl_age) #正确
sql = "INSERT student VALUES ('%s','%s','%d')" % (zbl_id, zbl_name, zbl_age) #'%d'也正确
print(sql)
cur.execute(sql)
conn.commit()# 将数据写入数据库
# 更新
id = 1
sql = "update student set age=100 where zid='%s'" % (id)
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback() # 删除
id = 2
sql = "delete from student where zid='%s'" % (id)
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
#查1
cur.execute("select * from user")
results = cur.fetchall()
for row in results:
zid = row[0]
name = row[1]
age = row[2]
# print(type(row[1])) #打印变量类型 <class 'str'> print("zid=%s,name=%s,age=%s" % \
(zid,name, age))
# 查2
cur.execute('select * from student')
for d in cur:
# 注意int类型需要使用str函数转义
print("ID: " + str(d[0]) + ' 名字: ' + d[1] + " 年龄: " + str(d[2]))#当非字符串输出时一定加str()将之转换成字符串
print("row_number:", (cur.rownumber))
# print('hello') cur.close() # 关闭游标
conn.close() # 释放数据库资源
except Exception:
print("发生异常")

python3.4连接mysql5.7数据库增删改查的更多相关文章

  1. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  2. Asp.Net操作MySql数据库增删改查

    Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git  1.安装MySQL数据库 ...

  3. go——beego的数据库增删改查

    一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...

  4. WindowsPhone8 数据库增删改查

    今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...

  5. MVC——数据库增删改查(aspx)

    MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系 ...

  6. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  7. mybatis--实现数据库增删改查

    首先,创建一个数据库my,并在数据库中插入一张表user,然后在user表中插入一行数据,代码如下: create database my; use my; create table user( id ...

  8. Python实现mysql数据库增删改查

    利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装!   1. 环境配置 安装第三方包  ,导入模块 mysql.connector  pip inst ...

  9. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

随机推荐

  1. 第五章 Inheritance继承

    [继承] Java不支持多重继承 - 每个子类只有一个超类. 不是将成员变量声明为静态,更好的做法是将University实例化为对象,然后使用该对象访问其成员,如下所示: [抽象类] 可以包含或者不 ...

  2. 关于xshell连接阿里云服务器后报错的问题,git安装失败,找不到git包

    1.如果安装git出现这样的错误的,在接下来键入这样一行命令 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-c ...

  3. alv界面透视功能

    bdcdata_wa-fnam = 'P_MONAT-LOW'.               bdcdata_wa-fval = '01'.               APPEND bdcdata_ ...

  4. JS中判断某个字符串是否包含另一个字符串的五种方法

    String对象的方法 方法一: indexOf()   (推荐) ? 1 2 var str = "123" console.log(str.indexOf("2&qu ...

  5. 函数 day9

    一,什么是函数? 函数的定义与调用 s = 'fkdsagadfdsagfdsagg' count = 0 for i in s: count += 1 print(count) l1 = [1,2, ...

  6. Navicat连接MySQL,出现2059 - authentication plugin 'caching_sha2_password'的解决方案

    昨天当我把MySQL的安装程序下载并安装好,然后又下载了另外一个工具来使用它,该工具的名称是Navicat Premium,当我通过该工具连接MySQL Workbench的时候,无法连接,提示“20 ...

  7. C# 获取 存储过程 返回值

    C#获取存储过程的返回值,这一方法,总是容易忘,今天给贴出来,以方便下次使用 存储过程: CREATE  PROCEDURE [dbo].[Proc_GetInfo]     ),     ) out ...

  8. 开源防火墙(pfSense)的安装部署与配置

    pfSense是一个基于FreeBSD架构的软件防火墙,通常会被安装在多网卡的主板上作为路由器或者防火墙去使用.往往这些硬件都比较廉价,高性能的配置也就1千元左右.pfSense具有商业防火墙的大部分 ...

  9. spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误

    http://your233.iteye.com/blog/1563240 上面的博客总结了4个可能出现的问题,如下: 1.mapper.xml中没有加入namespace 2.mapper.xml中 ...

  10. CODE[VS]4228 小猫爬山 小猫爬山

    原题链接 第一眼还以为是贪心,然后随便找了几组例子瞬间推翻贪心的想法.发现\(n\leqslant18\),显然是用爆搜+剪枝. 爆搜主体我是对小猫进行枚举,判断增添缆车,其实这是一个比较慢的搜法,而 ...