我正在尝试使用 pyodbc 驱动程序将数据插入到 4D 数据库中。我能够连接并获取之前使用相同格式插入的数据。这是代码:
#Connection string
class Database():
def __init__(self):
self.conn = pyodbc.connect('DRIVER={4d v20 ODBC Driver 64-bit};SERVER=127.0.0.1;UID=Designer;PWD=123456') # This works
self.curs = self.conn.cursor()
#Function
feed_analysis_data = (data.dateArrivedLab, user_id, data.labAnalysisID, data.feedName, data.harvestDate)
sql_query = "INSERT INTO feed_analysis (date, user_id, lab_analysis_id, feed_name, date_harvested) VALUES (?, ?, ?, ?, ?)"
try:
self.curs.execute(sql_query, feed_analysis_data)
except Exception as e:
print("Error executing SQL query:", e)
我已经检查了插入的数据,所有参数都在那里。
我尝试使用 %s, ?, '?', :1... 作为参数标记,但我仍然收到相同的错误消息:执行 SQL 查询时出错:('SQL 包含 0 个参数标记,但提供了 5 个参数', 'HY000')
我已经在网上和这里进行了搜索,但是我发现的任何东西都不适合我遇到的情况。任何见解将不胜感激。
此错误消息表明您的 SQL 语句与您尝试向其提供数据的方式不匹配。这是发生的事情:
SQL 语句:您的 SQL 语句没有任何用于注入值的占位符(?)。这些占位符称为参数标记。 参数:您尝试向 SQL 语句提供 5 个单独的值(参数)。 存在断开连接,因为 SQL 语句不需要任何单独的值。
这里有两种方法可以解决这个问题:
修改SQL语句:
在 SQL 语句中想要插入提供的值的位置包含参数标记 (?)。 例如,不要使用 INSERT INTO table_name (column1, column2, column3) VALUES ('value1', 'value2', 'value3'),而是使用 INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?) 删除额外参数:
如果您实际上不需要全部 5 个值,请修改代码以仅提供 SQL 语句期望的值数量。
问候 安吉特·阿迪卡里 https://www.vidyagyan.in