def insert_Table_basics(data_list):
conn = psycopg2.connect(database="aigdb", user="wlaigadmin", password="wlaigadmin", host="localhost", port="5432")
cursor=conn.cursor()
for route in data_list:
route_str = "insert into basics(ip,production_line_number,username,password) values('"+str(route[0])+"','"+route[1]+"','"+route[2]+"','"+route[3]+"'"+")"
cursor.execute(route_str)
conn.commit()
conn.close()
因为route[1]建表格式不是str 插入时直接+会说str和其他格式不能相加,这个插入函数怎么改
把sql放外面,把数据放execute第二个参数里面,外面的sql字段先用%s代替,在for循环里面一个个对应就好了
可以参考下我写的,
InsertSql = """insert into MoRoutingDetail(MoCode, SortSeq, InvCode, OpSeq, DPgFlag, DataTag) values (?, ?, ?, ?, ?, ?) """ # 插入语句
for data in MoRoutingDetailData:
str1 = (data[0], data[1], data[2], data[3], data[4], TodayData)
self.Oms.ExecNonQuery(InsertSql, str1) # 读取的数据一行行插入数据库
def ExecNonQuery(self, sql, insert_str):
cur = self.__GetConnect()
cur.execute(sql, insert_str)
self.conn.commit()
感觉可以试试字符串格式化
route_str = f'insert into basics(ip, production_line_number, username, password) values("{str(route[0])}", "{route[1]}", "{route[2]}", "{route[3]}")'