会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132359个问题

一、代码如下:

#!/user/bin/env/python3
# -*- coding:utf-8 -*-
#使用pymysql来创建数据库,并对数据库表进行操作

import pymysql

def connectdb():
    print("正在连接到mysql数据库服务器....")
    # 打开数据库连接
    # 用户名:root, 密码:,创建数据库,并在my_test数据库中创建表Student
    mydb = pymysql.connect("localhost","root","","my_test")
    print("mysql数据库服务器已连接!")
    mycursor = mydb.cursor()

def createtable(mydb):
    # 使用cursor()方法获取操作游标
    mycursor = mydb.cursor()
    # mycursor = pymysql.connect.
    # 如果存在student表,则先删除
    mycursor.execute("DROP TABLE IF EXISTS Student")
    sql = """CREATE TABLE Student (
            ID varchar(10) NOT NULL,
            Name varchar(8),
            Grade INT)"""
    # 创建student表
    mycursor.execute(sql)

def insertdb(mydb):
    mycursor = mydb.cursor

    # SQL 插入语句
    sql1 = """INSERT INTO Student VALUES
            ("001","CZQ",70),
            ("002","LHQ",80),
            ("003","MQ",90),
            ("004","WH",80),
            ("005","HP",70),
            ("006","YF",66),
            ("007","CSH",100)"""
    try:
        #执行sql1语句
        mycursor.execute(sql1)
        # 若成功执行,则提交
        mydb.commit()

    except:
        print("插入数据失败,请检查数据!")
        mydb.rollback()

def deletedb(mydb):
    mycursor = mydb.cursor()
    sql1 = "DELETE FROM TABLE Student WHERE Grade='%d'"%(100)

    try:
        mycursor.execute(sql1)
        mydb.commit()
    except:
        print("删除数据时发生错误,未能删除!")
        mydb.rollback()

def querydb(mydb):
    mycursor = mydb.cursor()
    sql1 = "SELECT * FROM Student"
    try:
        mycursor.execute(sql1)
        myresults = mycursor.fetchall()
        for row in myresults:
            ID = row[0]
            Name = row[1]
            Grade = row[2]
            # 打印结果
            print("ID:%s,Name:%s,Grade:%d"%(ID,Name,Grade))
    except:
        print("错误:不能够fetch数据!")

def updatedb(mydb):
    mycursor = mydb.cursor()
    sql1 = "UPDATE Student SET Grade = Grade+3 WHERE ID='%s'"%("003")

    try:
        # 执行sql语句
        mycursor.execute(sql1)
        mydb.commit()
    except:
        print("数据更新失败,请检查!")
        mydb.rollback()

def closedb(mydb):
    mydb.close

def main():
    mydb = connectdb()    #连接mysql数据库

    createtable(mydb)    #创建表
    insertdb(mydb)        #插入数据
    print("\n插入数据后:")
    querydb(mydb)

    deletedb(mydb)      #删除数据
    print("\n删除数据后:")
    querydb(mydb)

    updatedb(mydb)      #更新数据后
    print("\n更新数据后:")
    querydb(mydb)

    closedb(mydb)


if __name__ == '__main__':
    main()

二、运行后报错,提示如下:

"D:\Program Files\Python\Python38\python.exe" D:/PycharmProjects/数据库操作/使用pymysql.py

正在连接到mysql数据库服务器....

mysql数据库服务器已连接!

Traceback (most recent call last):

  File "D:/PycharmProjects/数据库操作/使用pymysql.py", line 111, in <module>

    main()

  File "D:/PycharmProjects/数据库操作/使用pymysql.py", line 94, in main

    createtable(mydb)    #创建表

  File "D:/PycharmProjects/数据库操作/使用pymysql.py", line 17, in createtable

    mycursor = mydb.cursor()

AttributeError: 'NoneType' object has no attribute 'cursor'


Process finished with exit code 1


请老师解答,谢谢。

Python 全系列/第五阶段:数据库编程/mysql的使用 676楼
Python 全系列/第五阶段:数据库编程/mysql的使用 677楼
Python 全系列/第五阶段:数据库编程/mysql的使用 681楼
Python 全系列/第五阶段:数据库编程/mysql的使用 682楼
Python 全系列/第五阶段:数据库编程/mysql的使用 683楼
Python 全系列/第五阶段:数据库编程/mysql的使用 685楼
Python 全系列/第五阶段:数据库编程/mysql的使用 686楼
Python 全系列/第五阶段:数据库编程/mysql的使用 687楼
Python 全系列/第五阶段:数据库编程/mysql的使用 688楼
Python 全系列/第五阶段:数据库编程/mysql介绍与环境安装 689楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637