我只是想选择或插入mysql使用python 3.2和mysql.connector.
import mysql.connector
filename = "t1.15231.0337.mod35.hdf"
try:
cnx = mysql.connector.connect(user='root', password='', database='etl')
cursor = cnx.cursor()
cursor.execute('SELECT * FROM hdf_file WHERE NAMA_FILE = %s',filename)
rows = cursor.fetchall ()
if rows == []:
insert_hdf = cursor.execute('INSERT INTO hdf_file VALUES(%s,null,NOW(),null,null,NOW())',filename)
cursor.execute(insert_hdf)
cnx.commit()
cursor.close()
cnx.close()
except mysql.connector.Error为err:print("Something went wrong: {}".format(err))
但是它说:未知列'filename'在where子句中我试着这样写:
cursor.execute('SELECT * FROM hdf_file WHERE NAMA_FILE = filename')
当使用cursor.execute()
与参数化查询时,查询参数作为序列(例如列表,元组)传递,如果使用命名参数,则作为字典传递。您的代码只传递字符串filename
。
你的查询可以这样写:
cursor.execute('SELECT * FROM hdf_file WHERE NAMA_FILE = %s', (filename,))
这里元组(filename,)
被传递给execute()
。插入查询类似:
cursor.execute('INSERT INTO hdf_file VALUES (%s, null, NOW(), null, null, NOW())',
(filename,))
execute()
将返回None
,因此没有必要将结果存储在insert_hdf
变量中。如果您尝试cursor.execute(insert_hdf)
,它也没有意义,并且会导致错误。