【问题标题】:unable to insert data that are stored in variables in to an MYSQL database table using python无法使用 python 将存储在变量中的数据插入到 MYSQL 数据库表中
【发布时间】:2015-07-31 16:00:19
【问题描述】:

我正在尝试将输入到 web 表单中的数据插入到数据库表中,我正在将数据传递给函数以插入数据,但它不成功下面是我的代码

def addnew_to_database(tid,pid,usid,address,status,phno,email,ord_date,del_date):
    connection = mysql.connector.connect(user='admin_operations', password='mypassword',host='127.0.0.1',database='tracking_system')
    try:
        print tid,pid,usid,address,status,phno,email,ord_date,del_date
        cursor = connection.cursor()
        cursor.execute("insert into track_table (tid,pid,usid,address,status,phno,email,ord_date,del_date) values(tid,pid,usid,address,status,phno,email,ord_date,del_date)")
        cursor.execute("insert into user_table (tid,usid) values(tid,usid)")
    finally:
        connection.commit()
        connection.close()

【问题讨论】:

  • 我说清楚了还是应该详细解释一下

标签: python mysql flask


【解决方案1】:

您应该将变量作为参数传递给.execute,而不是将它们放入实际查询中。例如:

cursor.execute("""insert into track_table 
                    (tid,pid,usid,address,status,phno,email,ord_date,del_date)
                  values (%s,%s,%s,%s,%s,%s,%s,%s,%s)""", 
               (tid,pid,usid,address,status,phno,email,ord_date,del_date))
cursor.execute("""insert into user_table 
                    (tid,usid) 
                  values (%s,%s)""",(tid,usid))

【讨论】:

  • 成功了,谢谢楼主
【解决方案2】:

您应该告诉我们您使用的是什么 API 以及错误代码是什么。 您应该在执行中定义值,现在在 sql 语句中定义为字符串,它们没有引用任何内容。

通常,当您以这种方式在 sql 语句中使用变量名时,您需要指出它是您要绑定数据的变量。这可能会将其替换为与有序列表相对应的 (1,2,3,4..) 或 (%s,%s,...) 或使用变量名称 (:tid,:pid,...)然后用字典定义 的值作为 execute() 的第二个参数。

像这样:

track_table_data = [tid,pid,usid,address,status,phno,email,ord_date,del_date]
user_table_data = [tid,usid]
cursor.execute("insert into track_table (tid,pid,usid,address,status,phno,email,ord_date,del_date) values(1,2,3,4,5,6,7,8,9)", track_table_data)
cursor.execute("insert into user_table (tid,usid) values(1,2)",user_table_data)

cursor.execute("insert into track_table (tid,pid,usid,address,status,phno,email,ord_date,del_date) values(:tid,:pid,:usid,:address,:status,:phno,:email,:ord_date,:del_date))", {'tid':tid,'pid':pid,'usid':usid,'address':address,'status':status,'phno':status,'email':email,'ord_date':ord_date,'del_date':del_date})
cursor.execute("insert into user_table (tid,usid) values(:tid,:usid)",{'tid':tid,'usid':usid})

【讨论】:

  • 值在另一个方法中定义,它们作为参数传递给这个方法
  • @learner 对不起,很清楚,我的意思是执行插入语句。您设置它的方式,您没有插入数据,因为在数据库中您插入的值没有引用任何内容,并且它们本身没有被引用为值。为了清楚起见,我将进行编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2017-03-16
  • 2014-06-01
相关资源
最近更新 更多