如何使用 Python 在数据库中插入

How to do an insert in the database with Python

我有一个执行 Moodle 版本检查的 Python 脚本。 检查 Moodle 版本后,我想插入数据库,但出现以下错误:

line 337
mycursor = db.cursor()
TabError: inconsistent use of tabs and spaces in indentation

这是使用中有问题的代码:

import import mysql.connector

...

def printversion(version):
if version != 0:
    print ("\nVersion found via " + version.split(';')[2] + " : Moodle " +  version.split(';')[0])
    vuln = version.split(';')[0]
    db = mysql.connector.connect(host="localhost", user="admin", passwd="", database="test")
    mycursor = db.cursor() 
    insertQuery = """INSERT INTO moodle (id,payload) VALUES (%s,%s)"""
    mycursor.execute(insertQuery, ('',vuln))
    db.commit()  
    db.close()
    return version.split(';')[0].replace("v","")
    
print ("\nVersion not found")
return False

报告的错误是关于代码缩进,但我不知道如何解决这个问题以将版本控制结果插入数据库。

代码是否缩进:

enter image description here

只需选中该行 如果版本 != 0:

只识别这一行

这里你有点误会,在python中的任何函数中,你都需要在开始编写任何代码之前提供一个缩进(制表符),

即结构是

def your_functionname(parameters)
    < you code here >

因此,按照正确的方式,您的代码应该如下所示

...

def printversion(version):
    if version != 0:
        print ("\nVersion found via " + version.split(';')[2] + " : Moodle " +  
        version.split(';')[0])
        vuln = version.split(';')[0]
        db = mysql.connector.connect(host="localhost", user="admin", passwd="", 
        database="test")
        mycursor = db.cursor() 
        insertQuery = """INSERT INTO moodle (id,payload) VALUES (%s,%s)"""
        mycursor.execute(insertQuery, ('',vuln))
        db.commit()  
        db.close()
        return version.split(';')[0].replace("v","")
        
    print ("\nVersion not found")
    return False

您的代码需要缩进函数定义之后的部分。

所以不是这个,

def printversion(version):
if version != 0:
    print ("\nVersion found via " + version.split(';')[2] + " : Moodle " +  version.split(';')[0])
    vuln = version.split(';')[0]
    db = mysql.connector.connect(host="localhost", user="admin", passwd="", database="test")
    mycursor = db.cursor() 
    insertQuery = """INSERT INTO moodle (id,payload) VALUES (%s,%s)"""
    mycursor.execute(insertQuery, ('',vuln))
    db.commit()  
    db.close()
    return version.split(';')[0].replace("v","")

你应该有这个,

def printversion(version):
    if version != 0:
        print ("\nVersion found via " + version.split(';')[2] + " : Moodle " +  version.split(';')[0])
        vuln = version.split(';')[0]
        db = mysql.connector.connect(host="localhost", user="admin", passwd="", database="test")
        mycursor = db.cursor() 
        insertQuery = """INSERT INTO moodle (id,payload) VALUES (%s,%s)"""
        mycursor.execute(insertQuery, ('',vuln))
        db.commit()  
        db.close()
        return version.split(';')[0].replace("v","")

我不知道你的代码的意图,但看起来你可能还想包含一个 else 语句,

    else:
        print ("\nVersion not found")
        return False