会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132904个问题
JAVA 全系列/第十八阶段:亿级高并发电商项目_架构/编码(旧)/电商:基于json数据格式完成商品规格参数模板管理 15421楼

一、代码如下:

#!/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的使用 15422楼
WEB前端全系列/第二十阶段:Vue2企业级项目(旧)/疫情动态实时播报 15423楼
Python 全系列/第一阶段:Python入门/编程基本概念 15425楼
JAVA 全系列/第四阶段:网页编程和设计/JavaScript语言 15428楼
Python 全系列/第一阶段:Python入门/控制语句 15429楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 15432楼
Python 全系列/第一阶段:Python入门/编程基本概念 15434楼

这个里面提示没有方法,这个方法应该在那里创建呢?

图片.png

图片.png

图片.png

图片.png

package com.bjsxt.config.shiro;
import com.bjsxt.domain.User;
import com.bjsxt.service.UserService;
import com.bjsxt.vo.ActiverUser;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
/**
 * @Author: GHP
 * 自定义 realm 去匹配用户名和密码
 */
public class UserRealm extends AuthorizingRealm {
    @Autowired
    @Lazy
    private UserService userService;
    @Override
    public String getName() {
        return this.getClass().getSimpleName();
    }
    /**
     * 做认证 --就是登陆
     * @param token
     * @return
    45
     * @throws AuthenticationException
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws
            AuthenticationException {
//得到用户登陆名
        String phone=token.getPrincipal().toString();
//根据电话查询用户是否存在
        User user = userService.queryUserByPhone(phone);
        if(null!=user){//说明用户存在,但是密码可能不正确
//组装存放到 reids 里面的对象
            ActiverUser activerUser=new ActiverUser();
            activerUser.setUser(user);
//匹配密码
            SimpleAuthenticationInfo info=new SimpleAuthenticationInfo(
                    activerUser,user.getPassword(),
                    ByteSource.Util.bytes(user.getSalt()),this.getName()
            );
            return info;
        }else{
            return null;//代表用户不存在
        }
    }
    /**
     * 做授权 --登陆成功之后判断用户是否有某个菜单或按钮的权限
     * @param principals
     * @return
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        ActiverUser activerUser= (ActiverUser) principals.getPrimaryPrincipal();//身份得到的就是上一个方法的返回值的值 第一个参数 activerUser
        SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
        return info;
    }
}


JAVA 全系列/第二十一阶段:分布式医疗云平台/系统管理前后端开发(旧) 15435楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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