簡體   English   中英

如何使用 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

報的錯誤是關於代碼縮進的,但是我不知道如何解決這個問題以在數據庫中插入版本控制結果。

您在這里有一個小小的誤解,在 python 中的任何 function 中,您需要在開始編寫任何代碼之前提供一個縮進(制表符),

即結構是

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

您的代碼需要縮進 function 定義之后的部分。

所以代替這個,

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

如果版本:= 0,只需標記該行:

僅標識這一行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM