簡體   English   中英

Python MySQL 連接器中的變量在函數中不起作用

[英]Variables in Python MySQL connector not working when in function

我制作了一個函數來整理我將在我的程序中執行的 SQL 調用。 通常這會起作用

mycursor = mydbr.cursor()
mycursor.execute("SELECT song FROM charts WHERE artist=%s",(artist,))
x = mycursor.fetchone()

我的功能看起來像這樣

import mysql.connector
def SqlQuery(connection, query, forvar1 = None, forvar2 = None):
    sqlobj = connection.cursor()
    if forvar1 is None and forvar2 is None:
        sqlobj.execute(query)
    if forvar1 is not None and forvar2 is None:
        sqlobj.execute(query, forvar1)
    if forvar1 is not None and forvar2 is not None:
        queryvars = (forvar1,forvar2)
        sqlobj.execute(query % queryvars)
    result = sqlobj.fetchone()
    connection.commit
    return result

查詢列表

sql = ["SELECT song FROM charts WHERE artist=%s"]

我的函數調用看起來像這樣

record = SqlQuery(mydbr, sql[0], artist)

但是每當它運行時,它根本就沒有添加變量,我看過通過wireshark發送的內容,看起來像

SELECT song FROM charts WHERE artist=%s

任何幫助都會很棒

該死的,我嘗試了這么多變體,但這個網站有一個正確的

https://pynative.com/python-mysql-select-query-to-fetch-data/

sqlobj.execute(query, forvar1)

本來應該

sqlobj.execute(query, (forvar1,))

請,正確的語法和我描述如下:

import mysql.connector
def SqlQuery(connection, query, forvar1 = None, forvar2 = None):
    sqlobj = connection.cursor()
    if forvar1 is None and forvar2 is None:
        sqlobj.execute(query)
    if forvar1 is not None and forvar2 is None:
        sqlobj.execute(query, (forvar1, ) )
    if forvar1 is not None and forvar2 is not None:
        queryvars = (forvar1,forvar2, )
        sqlobj.execute(query, queryvars)
    result = sqlobj.fetchone()
    connection.commit
    return result

Example

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers WHERE address = %s"
adr = ("Yellow Garden 2", )

mycursor.execute(sql, adr)

myresult = mycursor.fetchall()

for x in myresult:
  print(x) 

暫無
暫無

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

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