我不明白为什么我定义的函数不起作用。没有错误消息,只是没有 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)
什么都没发生...
db.commit() 应该在 writedb 的范围内,添加一个 TAB 😀
试试这个代码,
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()
您的语句使用 {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()
在
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)")