当前位置: 首页 > 知识库问答 >
问题:

Mysql.connector error(?) 在 Visual Studio Code 上使用 Python 3.10

杨昆
2023-03-14

我正在开发一个python程序来运行一个简单的基本库列表,出于某种原因,我和我的一个朋友收到了2个错误:

PS C:\用户\腐烂

还有这个

文件“c:\Users\Rotten\Downloads\import mysql.connector as sqltor.py”,第7行,位于光标中。执行(“创建表用户(用户名varchar(20),密钥varchar,salt varchar);”)文件“C:\Users\Rotten\AppData\Local\Programs\Python\Python310\lib\site packages\mysql\connector\cursor_cext.py”,第269行,执行结果=self.cnx。cmd_query(stmt,raw=self._raw,文件“C:\Users\Rotten\AppData\Local\Programs\Python\Python310\lib\site packages\mysql\connector\connection_cext.py”,第528行,在cmd_quiry中引发错误。get_mysql_exception(exc.errno,msg=exc.msg,mysql.connector.errors.ProgrammingErrors:1064(42000):SQL语法错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“varchar(70),salt varchar)(70))”附近使用的正确语法

import mysql.connector as sqltor
import hashlib
import os
from datetime import date
mycon=sqltor.connect(host="localhost",user="root",passwd="123456",database="library")
cursor=mycon.cursor()
cursor.execute("create table users(username varchar(20),key varchar(70),salt varchar(70));")
cursor.execute("create table userlist(username varchar(20),book varchar(200));")
def users(username,password):
    cursor.execute("select * from users where username={}".format(username))
    data=cursor.fetchone()
    if data=="(NULL)":
        return False
    elif data==True:
        salt=data[2]
        key=hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
        if data[1]==key:
            return True
        elif data[1]!=key:
            return False
        else:
            print("error")
    else:
        print("error")
        return False
def userlist(username,bookcode,bookborrowdate):
    booktick=cursor.execute("Select book from userlist where username={}".format(username))
    if booktick!="NULL":
        bookdict=booktick
    else:
        bookdict={}
    bookdict.update({'bookcode':'bookborrowdate'})
    cursor.execute("insert into userlist values('{}','{}');".format(username,bookdict))
    mycon.commit()
def userfull():
    cursor.execute("select book from userlist;")
    bookdata=cursor.fetchone()
    bookneed=bookdata[0]
    for key, value in bookneed.items():
        print(key, ' : ', value)
def checkkey():
    cursor.execute("select count(username) from users, where username='{}';".format(username))
    if 1 in cursor.fetchone():
        return True
    elif 0 in cursor.fetchone():
        return False
    else:
        print("error")
        return False
def userret(username,bookcode):
    cursor.execute("select book from userlist where username={};".format(username))
    bookreturn=cursor.fetchone()
    bookretex=bookreturn[0]
    if bookcode in bookretex:
        borrowdate=bookretex.get(bookcode)
        pricecheck=date.today
        dayspast=(pricecheck-borrowdate).days
        rate=dayspast*0.5
        del bookretex[bookcode]
        return rate
def adduser(username,password):
    salt = os.urandom(32)
    key = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
    cursor.execute("insert into users values('{}','{}','{}'".format(username,key,salt))
    mycon.commit()
while True:
    print("WELCOME TO THE LIBRARY SYSTEM")
    print("1.LOGIN")
    print("2.NEW USER")
    print("3.EXIT")
    ch=int(input("Enter your choice : "))
    if ch==1:
        print("WELCOME, PLEASE ENTER YOUR USERNAME AND PASSWORD")
        username=input("Enter username:")
        password=input("Enter password:")
        users(username,password)
        if users==True:
            while True:
                print("Welcome back ",username,". What do you want to do? \n")
                print("1.Add book to borrow")
                print("2.Return book borrowed")
                print("3.Check existing borrowed book(s)")
                print("4.Logout")
                usch=int(input("Enter your choice: "))
                if usch==1:
                    while True:
                        bookcode=input("Enter code of book to be borrowed")
                        bookborrowdate=date.today()
                        userlist(username,bookcode,bookborrowdate)
                        td=timedelta(10)
                        print("Please return this book by",bookborrowdate+td)
                        choice=input("Continue?[y/n]")
                        if choice in 'Yy':
                            continue
                        else:
                            break
                elif usch==2:
                    while True:
                        bookcode=input("Enter code of borrowed book to be returned")
                        returnticket=userret(username,bookcode)
                        print("Book returned, please pay Rs.",returnticket," at the reception")
                        returncookie=input("continue? [y/n]: ")
                        if returncookie in "Yy":
                            continue
                        else:
                            break
                elif usch==3:
                    userfull()
                elif usch==4:
                    print("Logging out of ",username,"...")
                    username=None
                    password=None
                    break
                else:
                    print("Wrong input, try again")
        elif users==False:
            print("Username or password wrong, please try again")
        else:
            if mycon.is_connected():
                print("Unknown error, please try again")
            else:
                print("Error connecting to database, please try again")
    elif ch==2:
        while True:
            print("WELCOME, NEW USER, PLEASE ENTER A VALID USERNAME AND PASSWORD")
            usertest=input("Enter username: ")
            usertest2=usertest
            checkkey(usertest)
            if checkkey==True:
                password=input("Enter Password: ")
                username=usertest2
                adduser(username,password)
                print("USER CREATED")
                break
            elif checkkey==False:
                print("Username already exists, try again")
                continue
            else:
                print("Error")
                break
    elif ch==3:
        mycon.close()
        break
    else:
        print("Invalid choice. please try once again.")

为什么会发生这种情况,我该如何解决?

共有1个答案

武嘉祥
2023-03-14

发生该错误是因为您正在尝试创建一个名为“key”的列,该列是mysql中的保留字。在键周围使用 ' 来转义它。

编辑:删除< code >用户中的< code >,,其中在< code>checkkey()下

 类似资料:
  • 问题内容: 有人尝试过使用Android应用程序吗? 可能吗?我试图从中使用Jar,并收到以下异常: 我使用的代码非常简单 我有,,和在我的目录中。 在我的服务器应用程序中,此代码可以在相同的库中正常工作。 问题答案: msgpack :可在Android上正常使用 msgpack-rpc :适用于Android,但有一个警告。 具体来说,您需要为API级别8(Android 2.2.1)添加以下

  • 我有一些用RNCryptor加密的图像文件,我想对它们进行解密,并将它们用作框架布局的背景。我浏览了示例文件,但我的应用程序force在一段时间后关闭,没有显示任何图像。我使用JNCryptor库 我将加密图像放入raw文件夹,如下所示: 这是我活动中的代码: 这个文件可以很好地iOS这个代码: 这里是logcat输出: 08-2819:52:11.720:E/AndroidRuntime(106

  • 我编写了一个JUnit测试,使用Mockito和PowerMock模拟一些类。我试图将其转换为cucumber测试,但静态的PowerMock特性不起作用。 两类相关cucumber的提取物: 虽然这段代码在JUnit测试中工作,但它在这里失败了--它进入了方法,该方法应该被模拟,然后通过在其中执行代码而失败。我试着加了几行: 对上述两个类(当然,我不能在类中使用,因为它已经有一个注释),但这不会

  • Ceph 文件系统可作为 Hadoop 文件系统( HDFS )的落地式替代品,本章描述了 Ceph 用于 Hadoop 存储的安装和配置过程。 依赖关系 CephFS 的 Java 接口 Hadoop 的 CephFS 插件 Important 当前要求 Hadoop 1.1.x 稳定版系列。 安装 在 CephFS 上使用 Hadoop 有三个必要条件。首先,必须有一个运行的 Ceph 。建设

  • java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法“PublishOversh”[archive,bat,build,catchError,checkout,deleteDir,dir,dockerFingerprintFrom,Docker FingerPrintRun,echo,emailext,EmailExtrecients,envVarsForTool

  • 问题内容: 我希望程序在2秒后显示。 然后我在之后添加。 但是我不知道为什么程序会停止显示,而不显示,并且“ show test”消息可以成功打印出来 问题答案: 简短的答案,不要。 Swing是一个单线程框架,这意味着阻止事件调度线程的任何事物都将阻止它更新UI或处理任何新事件(使您的UI看起来像是被挂起了)。 当然,您可以使用,但Swing也不是线程安全的。这意味着必须在事件分发线程的上下文内

  • 本文向大家介绍如何在BigDecimal上使用>,=,相关面试题,主要包含被问及如何在BigDecimal上使用>,=,时的应答技巧和注意事项,需要的朋友参考一下 Class的每个对象都有一个可用来将其与另一个BigDecimal进行比较的方法。然后比较的结果,或者根据需要进行比较。阅读文档,您将找到答案。 运营商,,等只能在基本数据类型等中使用,,或它们的包装类等和。 从以下文档中: 将其与指定

  • 问题内容: 我有一些类可以执行一些MySQL查询和准备好的语句。但是,我不知道如何在这些类中合并我的PDO对象。例如,我想做这样的事情: 不幸的是,它不起作用。有人可以建议一种优雅的方法吗?谢谢你的时间。抱歉,我是新手,如果您不清楚任何事情,请留下任何评论,我会尽力答复! 问题答案: 您可以在实现单例模式的类中实例化与数据库的连接。连接将完成一次,所有其他对象/脚本都可以轻松访问该类。 在下面的示