python操做mysql数据库

本文全部的实验基于mysql的python数据库里的test表(估计给数据库起名为python的人也就只有我了),test表结构以下:python

常规操做

能够把connection理解成一个事务,事务的最终有两种操做:提交connection.commit()和回滚connection.rollback()mysql

import pymysql
import time

# 链接数据库
connection = pymysql.connect(host='127.0.0.1',
                       port=3306,
                       database='python',
                       user='root',
                       password='root',
                       charset='utf8')
try:
    with connection.cursor() as cursor:
        sql = "insert into test(str, num, time) values(%s, %s, %s)"  # 插入整数也用%s
        for i in range(10):
            cursor.execute(sql, ('hello,world', i, time.strftime('%y-%m-%d %H-%M-%S')))  # 这里给的整数i
    connection.commit()  # 提交数据库添加操做


    with connection.cursor() as cursor:
        sql = "select id, str from test where num > %s"
        cursor.execute(sql, (3,))

        # 每次取结果集,cursor将会向后移动
        print(cursor.fetchone())  # 取一行结果集
        print(cursor.fetchmany(2))  # 取若干行
        print(cursor.fetchall())  # 取全部行

except Exception as e:
    print(e)
    print('数据库操做发生异常')
    connection.rollback()
else:
    print('数据库操做成功')
finally:
    connection.close()

关于其余的一些东西

1. 每次调用execute()后都会返回受影响的行数,一样能够经过cursor.rowcount进行获取sql

2. fetch()默认以元组的形式返回查询结果,能够在建立cursor的时候传入参数,设置fetch()的查询结果以字典的形式返回,这样就能够在查询结果里,根据key来索引value了数据库

cursor = connection.cursor(cursor=pymysql.cursors.DictCursor)
相关文章
相关标签/搜索