Python 插入 MySQL

问题描述 投票:0回答:4

我不明白为什么我定义的函数不起作用。没有错误消息,只是没有 INSERT 到表中

我定义我的功能:

import mysql.connector
db = mysql.connector.connect(host="localhost", user="root", passwd="", database="autot")
mycursor = db.cursor()

def writedb(Tablename,Time, trade_ID, Price, Quantity):
    mycursor.execute("INSERT INTO '{Tablename}' (Time, trade_ID, Price, Quantity) VALUES (%s,%s,%s,%s)", 
                     ({Time},{trade_ID}, {Price}, {Quantity}))
    db.commit()

然后我使用我的功能:

writedb(msft_price, 1678440087934, 240165117, 16.73000000, 97)

什么都没发生...

python mysql mysql-python mysql-connector
4个回答
1
投票

db.commit() 应该在 writedb 的范围内,添加一个 TAB 😀


1
投票

试试这个代码,

import pymysql
conn=pymysql.connect(host="localhost", user="root", passwd="", database="autot")
cur  = conn.cursor()

def insertData(Tablename,Time,trade_ID,Price,Quantity):
    try :
        cur.execute(f"INSERT INTO '{Tablename}' (Time, trade_ID, Price, Quantity) VALUES ({Time},{trade_ID}, {Price}, {Quantity})")
        conn.commit()
    except Exception as e:
        conn.rollback()


insertData('msft_price', 1678440087934, 240165117, 16.73000000, 97)

conn.close()


0
投票

您的语句使用 {Tablename} 但不是 f 字符串(意味着它不以 f"...{Tablename}..." 开头。

尝试使用 .format() 而不是当前的大括号:

def writedb(Tablename, Time, trade_ID, Price, Quantity):
    mycursor.execute("INSERT INTO '{0}' (Time, trade_ID, Price, Quantity) VALUES (%s,%s,%s,%s)".format(Tablename), 
                 (Time, trade_ID, Price, Quantity))
    db.commit()

0
投票

mycursor.execute(
    "INSERT INTO '{Tablename}' (Time, trade_ID, Price, Quantity) VALUES (%s,%s,%s,%s)", 
    ({Time},{trade_ID}, {Price}, {Quantity})
)

你的插入语句只是一个普通的字符串,它需要是一个格式字符串吗?

试试这个,看看结果字符串是什么样的:

print("INSERT INTO '{Tablename}' (Time, trade_ID, Price, Quantity) VALUES (%s,%s,%s,%s)")
print(f"INSERT INTO '{Tablename}' (Time, trade_ID, Price, Quantity) VALUES (%s,%s,%s,%s)")
© www.soinside.com 2019 - 2024. All rights reserved.