python数据表插入

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]}")'