Rumah > Soal Jawab > teks badan
Rancangan saya adalah untuk memasukkan tarikh (hari_ujian) ke dalam pangkalan data MySql di mana format data dirujuk sebagai tarikh.
Saya terpaksa menyimpan sintaks dalam format yang anda lihat di bawah. Tetapi malangnya percubaan saya untuk menyimpan tarikh secara khusus sebagai rentetan dalam sintaks VALUES(%s...) nampaknya tidak berfungsi.
Adakah sesiapa tahu cara paling mudah untuk melaraskan sintaks supaya berjaya memasukkan day_of_test?
Terima kasih banyak-banyak semua
import mysql.connector mydb = mysql.connector.connect(host="34.xxx.xxx.xxx", user="xxxx", password="xxxxx", database='btc-analysis-db') c = mydb.cursor() btc_est = 150.2 sap_close = 100.23 gold_close = 120.2 bonds_close = 210.12 btc_actual = 130.12 day_of_test = "2022-04-20" c = mydb.cursor() c.execute( "INSERT INTO `ML1`(`day_of_test`, `btc_est`, `sap_close`, `bonds_close`, `gold_close`, `btc_actual`) VALUES (%s, %d, %d, %d, %d, %d);" % ( day_of_test, btc_est, sap_close, bonds_close, gold_close, btc_actual)) mydb.commit() c.execute("select * from ML1") result = c.fetchall()
P粉9589860702024-02-27 11:12:02
Jika anda menggunakan format rentetan python, maka anda kehilangan petikan sekitar nilai tarikh, sintaks anda hendaklah:
c.execute( "INSERT INTO `ML1`(`day_of_test`, `btc_est`, `sap_close`, `bonds_close`, `gold_close`, `btc_actual`) VALUES ('%s', %d, %d, %d, %d, %d);" % ( day_of_test, btc_est, sap_close, bonds_close, gold_close, btc_actual))
Tetapi anda tidak sepatutnya berbuat demikian. Anda harus menggunakan pernyataan yang disediakan (untuk mengelakkan suntikan SQL dan masalah lain), dan sintaks anda sepatutnya kelihatan seperti ini:
c.execute( "INSERT INTO `ML1`(`day_of_test`, `btc_est`, `sap_close`, `bonds_close`, `gold_close`, `btc_actual`) VALUES (%s, %s, %s, %s, %s, %s);", ( day_of_test, btc_est, sap_close, bonds_close, gold_close, btc_actual))